Форум программистов, компьютерный форум, киберфорум
Наши страницы

Количество сравнений в массиве - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Модульное программировапние на С++ (консоль) http://www.cyberforum.ru/cpp-beginners/thread330885.html
Помогите пожалуйста подкорректировать код. Задание было таким: Разместить определение данных в заголовочном файле, а определения функций и главную функцию программы в двух отдельных файлах. Вариант...
C++ Конус в С++.. Ребят всем привет! Я новичок в программировании,пробовал только писать немного в Паскале,мне в универе дали задание изобразить конус,параллелограмм вписанный в конус на С++ Подскажите пожалуйста,с... http://www.cyberforum.ru/cpp-beginners/thread330863.html
C++ Методы оптимизации памяти
Написал статью по оптимизации памяти в программах на С++. Ее можно почитать тут: http://itw66.ru/blog/c_plus_plus/491.html А какие методы вы можете предложить по повышению эффективности...
Вопрос начинающего C++
Здравствуйте. Мне сейчас 16 лет и в сентябре я пойду в 11 класс (я школота). В будущем я хочу стать программистом. Сейчас я уже учу С++ (немножко могу гонять в консоли) и немножко Delphi. Как...
C++ Сетевая карта http://www.cyberforum.ru/cpp-beginners/thread330778.html
Добрый вечер. Подскажите в какую сторону смотреть и какие маны читать. Задача: узнать сколько у сетевой карты ethernet портов, узнать их адреса, попробовать послать в них и принять из них данные....
C++ Может кому понадобится Кое-что из динамического программирования... Задача подсчёта в прямоугольной матрице количества связных областей (областей состоящих из смежных клеток) . В данном случае вводится матрица из нулей и... подробнее

Показать сообщение отдельно
viktorrrr
45 / 45 / 1
Регистрация: 11.02.2010
Сообщений: 375

Количество сравнений в массиве - C++

08.07.2011, 11:53. Просмотров 783. Ответов 10
Метки (Все метки)

И снова здравствуйте!) Есть рабочий код - поиск в двоичном массиве. Как модифицировать код, чтоб вычислить число сравнений при поиске??
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
#include <iostream>
#include <cstdlib>
using namespace std;
 
void Sort(int *arr, int n)
{
 
    for (int i=0; i<n; i++)
    {
    int indexmin=i;
    for (int j=indexmin; j<n; j++)
    if (arr[indexmin]>arr[j])
    indexmin=j;
    if (i!=indexmin)
    {
    int tmp=arr[indexmin];
    arr[indexmin]=arr[i];
    arr[i]=tmp;
    }
    }
 
}
 
int *Create(int n)
{
 
    if(n<=10000)
    {
    int *arr = new int [n];
    int i=0;
    while(i<n)
    {
 
        int flag=0;
        arr[i]=rand()%(n+n); //Случайные числа до суммы введенного размера массива
        for(int j=0; j<i; j++)
        if (arr[j]==arr[i])
        {
        flag=1;
        break;
        }
        if (flag==1)
        continue;
        else
        i++;
        
    }
    Sort(arr, n);
    return arr;
    }
    
    else
    return NULL;
    
}
 
void Show(int *arr, int n)
{
 
    for (int i=0; i<n; i++)
    cout << arr[i] << " ";
    cout << endl;
 
}
 
int BinarySearch(int *arr, int n, int x)
{
 
    int index=-1;
    int L=0, R=n, m;
    while(L<R)
    {
    m=(L+R)/2;
    if (arr[m]==x)
    {
    index=m;
    break;
    }
    if (x<arr[m])
    R=m;
    else
    L=m+1;
    cout<<m%2;
    }
    return index;
 
}
 
int main()
{
 
    int *arr=NULL;
    int n;
    char action;
    setlocale(LC_ALL,"Russian");
    do
    {
 
        cout << "1. Создать массив чисел" << endl
        << "2. Показать исходный массив" << endl
        << "3. Двоичный поиск" << endl
        << "0. Выход:" << endl;
        cin >> action;
        switch(action)
        {
        case '1':
 
            if (arr!=NULL)
            {
            delete[] arr;
            }
            cout <<"Введите размер массива = ";
            cin >> n;
            arr=Create(n);
            if (arr!=NULL)
            cout << "Массив чисел создан" << endl;
            else
            cout << "Невозможно создать массив" << endl;
            break;
 
        case '2':
 
            if (arr!=NULL)
            {
            cout << "Исходный массив:" << endl;
            Show(arr,n);
            }
            else
            cout << "Создайте массив" << endl;
            break;
 
        case '3':
 
            if (arr!=NULL)
            {
            cout << "Искомый элемент = ";
            int x;
            cin >> x;
            if (BinarySearch(arr,n,x)!=-1)
            cout << "Элемент найден. Его индекс = " << BinarySearch(arr,n,x) << endl;
            else
            cout << "Элемент не найден" << endl;
            }
            else
            cout << "Создайте массив" << endl;
            break;
 
        case '0':
 
            if (arr!=NULL)
            delete[] arr;
            break;
 
        }
 
    }while(action!='0');
    cin.get();
 
}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru