Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.74/19: Рейтинг темы: голосов - 19, средняя оценка - 4.74
 Аватар для Temirlan90
137 / 137 / 25
Регистрация: 30.09.2010
Сообщений: 333

Сортировки

15.11.2010, 13:33. Показов 4133. Ответов 27
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Есть динамичный массив:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
#include <iostream>
#include <ctime>
 
using namespace std;
 
int main() {
    setlocale(LC_ALL,"Russian");  
    srand((unsigned)time(NULL));
    int *arr;
    int size;
    cout << "Введите размер массива: ";
    cin >> size;
    arr = new int[size];    
    cout << "Сформированый массив: ";
    for(int i = 0; i < size; i++) {
        arr[i] = rand() % 9 + 1;
        cout << arr[i] << "  ";
    }   
    cout << endl;   
    delete [] arr;
    system("pause");
}
Мне надо его отсортировать 5 способами:
Insertion sort
Selection sort
Merge sort
Bubble sort
Quick sort
Уважаемые оставляйте комментарии в коде. В заранее благодарю.
1
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
15.11.2010, 13:33
Ответы с готовыми решениями:

Составить блок – схемы для шейкер- сортировки и сортировки Шелла
Доброго времени суток, очень нужна ваша помощь в решении данной проблемы, буду бесконечно благодарен. Составить блок – схемы для шейкер-...

Пример быстрой сортировки массива строк и сортировки методом выбора
Добрый вечер. Скиньте пожалуйста пример быстрой сортировки массива строк и сортировки массива строк методом выбора. Очень срочно надо,...

std::sort/qSort. Реализация сортировки с заданной функцией сортировки в классе. must use '.*' or '->*' to call
Доброго времени суток. Столкнулся с проблемой. Необходимо отсортировать элементы в списке Qt (то бишь QList). Элементы-структуры...

27
 Аватар для Temirlan90
137 / 137 / 25
Регистрация: 30.09.2010
Сообщений: 333
15.11.2010, 22:36  [ТС]
Студворк — интернет-сервис помощи студентам
RUSya82, у меня на VS2010 не компилируется=( Вы на каком компиляторе запускали?
Unhandled exception at 0x00413ed7 in rr.exe: 0xC00000FD: Stack overflow.
0
 Аватар для RUSya82
242 / 120 / 14
Регистрация: 15.10.2010
Сообщений: 395
15.11.2010, 23:03
Dev C++ 4.9.9.2
Компилируется нормально

Добавлено через 23 секунды
Переполнение стека у Вас

Добавлено через 2 минуты
Объявите double A[250000]; из 40 строки глобально, то есть вне функции main(). Должно пойти.
1
90 / 125 / 28
Регистрация: 17.10.2010
Сообщений: 1,338
15.11.2010, 23:39
RUSya82, а почему у меня компилятор ругается:
Error 1 error C2084: function 'int main(void)' already has a body c:\program files\microsoft sdks\windows\v6.0a\include\bcrypt.h 3 p786
Error 2 error C2146: syntax error : missing ';' before identifier 'NCryptBuffer' c:\program files\microsoft sdks\windows\v6.0a\include\ncrypt.h 111 p786
Error 3 error C4430: missing type specifier - int assumed. Note: C++ does not support default-int c:\program files\microsoft sdks\windows\v6.0a\include\ncrypt.h 111 p786
Error 4 error C4430: missing type specifier - int assumed. Note: C++ does not support default-int c:\program files\microsoft sdks\windows\v6.0a\include\ncrypt.h 111 p786
Error 5 error C2146: syntax error : missing ';' before identifier 'NCryptBufferDesc' c:\program files\microsoft sdks\windows\v6.0a\include\ncrypt.h 113 p786
Error 6 error C4430: missing type specifier - int assumed. Note: C++ does not support default-int c:\program files\microsoft sdks\windows\v6.0a\include\ncrypt.h 113 p786
Error 7 error C4430: missing type specifier - int assumed. Note: C++ does not support default-int c:\program files\microsoft sdks\windows\v6.0a\include\ncrypt.h 113 p786
Error 8 error C2061: syntax error : identifier 'NCryptBufferDesc' c:\program files\microsoft sdks\windows\v6.0a\include\ncrypt.h 447 p786
Error 9 error C2061: syntax error : identifier 'NCryptBufferDesc' c:\program files\microsoft sdks\windows\v6.0a\include\ncrypt.h 461 p786
Error 10 error C2061: syntax error : identifier 'NCryptBufferDesc' c:\program files\microsoft sdks\windows\v6.0a\include\ncrypt.h 557 p786
Error 11 error C2146: syntax error : missing ';' before identifier 'hCNGContentEncryptKey' c:\program files\microsoft sdks\windows\v6.0a\include\wincrypt.h 8161 p786
Error 12 error C4430: missing type specifier - int assumed. Note: C++ does not support default-int c:\program files\microsoft sdks\windows\v6.0a\include\wincrypt.h 8161 p786
Error 13 error C4430: missing type specifier - int assumed. Note: C++ does not support default-int c:\program files\microsoft sdks\windows\v6.0a\include\wincrypt.h 8161 p786
Error 14 error C2146: syntax error : missing ';' before identifier 'hCNGContentEncryptKey' c:\program files\microsoft sdks\windows\v6.0a\include\wincrypt.h 8542 p786
Error 15 error C4430: missing type specifier - int assumed. Note: C++ does not support default-int c:\program files\microsoft sdks\windows\v6.0a\include\wincrypt.h 8542 p786
Error 16 error C4430: missing type specifier - int assumed. Note: C++ does not support default-int c:\program files\microsoft sdks\windows\v6.0a\include\wincrypt.h 8542 p786
Error 17 error C2061: syntax error : identifier 'BCRYPT_KEY_HANDLE' c:\program files\microsoft sdks\windows\v6.0a\include\wincrypt.h 14115 p786
Error 18 error C2061: syntax error : identifier 'BCRYPT_KEY_HANDLE' c:\program files\microsoft sdks\windows\v6.0a\include\wincrypt.h 14129 p786
Error 19 error C3861: 'time': identifier not found c:\users\администратор\documents\visual studio 2008\projects\c++\console\p786\p786\p786 .cpp 141 p786
Error 20 error C3861: 'time': identifier not found c:\users\администратор\documents\visual studio 2008\projects\c++\console\p786\p786\p786 .cpp 160 p786
0
 Аватар для RUSya82
242 / 120 / 14
Регистрация: 15.10.2010
Сообщений: 395
16.11.2010, 13:32
хы, не знаю. я ВС не пользуюсь. Но в Dev c++ все ОК

Добавлено через 1 минуту
Цитата Сообщение от isaak Посмотреть сообщение
ncrypt.h
Это кто?

Добавлено через 3 часа 31 минуту
isaak, Мне кажется у вас какие то проблемы с CharToOem

Добавлено через 8 часов 12 минут
Temirlan90, Запустилась программа?
0
 Аватар для Temirlan90
137 / 137 / 25
Регистрация: 30.09.2010
Сообщений: 333
16.11.2010, 14:11  [ТС]
Столкнулся с двумя видами поиска (Бинарный и Линейный), вот собственно исходники:
Бинарный (рекурсивный и не рекурсивный)
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
#include <stdio.h>
#include <conio.h>
#define MAX_LEN 10
 
/* Non-Recursive function*/
void b_search_nonrecursive(int l[],int num,int ele) {
    int l1, i, j, flag = 0;
    l1 = 0;
    i = num - 1;
    while(l1 <= i) {
        j = (l1 + i) / 2;
        if( l[j] == ele) {
            printf("\nThe element %d is present at position %d in list\n", ele, j);
            flag = 1;
            break;
        }
        else
            if(l[j] < ele)
                l1 = j + 1;
            else
                i = j - 1;
    }
    if( flag == 0)
        printf("\nThe element %d is not present in the list\n", ele);
}
 
/* Recursive function*/
int b_search_recursive(int l[], int arrayStart, int arrayEnd, int a) {
    int m, pos;
    if (arrayStart <= arrayEnd) {
        m = (arrayStart + arrayEnd) / 2;
        if (l[m] == a)
            return m;
        else 
            if (a < l[m])
                return b_search_recursive(l, arrayStart, m - 1, a);
            else
                return b_search_recursive(l, m + 1, arrayEnd, a);
    }
    return -1;
}
 
void read_list(int l[], int n) {
    int i;
    printf("\nEnter the elements:\n");
    for(i = 0; i < n; i++)
        scanf("%d", &l[i]);
}
 
void print_list(int l[], int n) {
    int i;
    for(i = 0; i < n; i++)
        printf("%d\t", l[i]);
}
 
/*main function*/
void main() {
    int l[MAX_LEN], num, ele, f, l1, a;
    int ch, pos;
    printf("======================================================");
    printf("\n\t\t\tMENU");
    printf("\n=====================================================");  
    printf("\n[1] Binary Search using Recursion method");  
    printf("\n[2] Binary Search using Non-Recursion method");  
    printf("\n\nEnter your Choice:");  
    scanf("%d",&ch); 
    if(ch <= 2 & ch > 0) { 
        printf("\nEnter the number of elements : ");  
        scanf("%d", &num);  
        read_list(l, num);  
        printf("\nElements present in the list are:\n\n");  
        print_list(l, num);  
        printf("\n\nEnter the element you want to search:\n\n");  
        scanf("%d", &ele);     
        switch(ch) {
        case 1:printf("\nRecursive method:\n");  
            pos = b_search_recursive(l, 0, num, ele);  
            if(pos == -1) {  
                printf("Element is not found");  
            }  
            else {  
                printf("Element is found at %d position", pos);  
            }  
            getch();   
            break;
        case 2:printf("\nNon-Recursive method:\n"); 
            b_search_nonrecursive(l, num, ele);
            getch();
            break;
        }
    }
    getch(); 
}
Линейный(рекурсивный и не рекурсивный)
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
#include <stdio.h>  
#include <conio.h>
#define MAX_LEN 10 
 
/* Non-Recursive method*/
void l_search_nonrecursive(int l[], int num, int ele) {
    int j, f = 0;
    for(j = 0; j < num; j++)
        if( l[j] == ele) {
            printf("\nThe element %d is present at position %d in list\n", ele, j);
            f = 1;
            break;
        }
        if(f == 0)
            printf("\nThe element is %d is not present in the list\n", ele);
}
 
/* Recursive method*/
void l_search_recursive(int l[], int num, int ele) {
    int f = 0;
    if( l[num] == ele) {
        printf("\nThe element %d is present at position %d in list\n", ele, num);  
        f = 1;
    }
    else {
        if((num == 0) && (f == 0)) {
            printf("The element %d is not found.", ele);
        }
        else {
            l_search_recursive(l, num - 1, ele);
        }
    }
    getch();
}
 
void read_list(int l[], int num) {
    int j;
    printf("\nEnter the elements:\n");
    for(j = 0; j < num; j++)
        scanf("%d", &l[j]);
}
 
void print_list(int l[], int num) {
    int j;
    for(j = 0; j < num; j++)
        printf("%d\t", l[j]);
} 
 
void main() {
    int l[MAX_LEN], num, ele;
    int ch;    
    printf("======================================================");  
    printf("\n\t\t\tMENU");  
    printf("\n=====================================================");  
    printf("\n[1] Linary Search using Recursion method");  
    printf("\n[2] Linary Search using Non-Recursion method");  
    printf("\n\nEnter your Choice:");  
    scanf("%d", &ch);    
    if(ch <= 2 & ch > 0) { 
        printf("Enter the number of elements :");  
        scanf("%d", &num);  
        read_list(l, num);  
        printf("\nElements present in the list are:\n\n");  
        print_list(l, num);  
        printf("\n\nElement you want to search:\n\n");  
        scanf("%d", &ele);    
        switch(ch) {  
        case 1:printf("\n**Recursion method**\n");  
            l_search_recursive(l, num, ele);  
            getch();  
            break;  
        case 2:printf("\n**Non-Recursion method**\n");  
            l_search_nonrecursive(l, num, ele);
            getch();  
            break;  
        }  
    }  
    getch();  
}  
/*end main*/
Кто нибудь расставите комментарии в двух данных исходниках. Заранее спасибо =)

Добавлено через 24 минуты
Temirlan90, Запустилась программа?
да, спасибо

RUSya82, как я понял, вы там все алгоритмы сравнивали которые я выкладывал?
0
 Аватар для RUSya82
242 / 120 / 14
Регистрация: 15.10.2010
Сообщений: 395
16.11.2010, 21:32
Цитата Сообщение от Temirlan90 Посмотреть сообщение
RUSya82, как я понял, вы там все алгоритмы сравнивали которые я выкладывал?
Нет, я просто предлагал свои решения.

Добавлено через 30 минут
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
/* Non-Recursive function*/
/*num - количество элементов
ele - поисковый элемент*/
void b_search_nonrecursive(int l[],int num,int ele) {
        int l1, i, j, flag = 0;
        l1 = 0;
        i = num - 1;
        while(l1 <= i) {//продолжаем, пока поиск не сузится до 1 элемента
                j = (l1 + i) / 2;//Делим массив пополам
                if( l[j] == ele) {//если середина и есть поисковый элемент, тогда говорим об этом
                        printf("\nThe element %d is present at position %d in list\n", ele, j);
                        flag = 1;
                        break;
                }
                else
                        if(l[j] < ele)//иначе выбираем для поиска тот полумассив, где вероятно находится
                                      //поисковый элемент
                                l1 = j + 1;
                        else
                                i = j - 1;
        }
        if( flag == 0)//если флаг не установлен, то элемент не найден
                printf("\nThe element %d is not present in the list\n", ele);
}
Добавлено через 8 минут
Ну а в линейном поиске итак все понятно, просто смотрим весь массив подряд, и проверяем, нет ли там поискового элемента)
1
 Аватар для Temirlan90
137 / 137 / 25
Регистрация: 30.09.2010
Сообщений: 333
17.11.2010, 18:52  [ТС]
RUSya82, а как можно добавить туда что бы считало сколько мили секунд тратится на поиск?)
0
 Аватар для RUSya82
242 / 120 / 14
Регистрация: 15.10.2010
Сообщений: 395
17.11.2010, 21:22
Можно. Так же, как и при сортировке. Объявляете две переменных типа SYSTEMTIME. например SYSTEMTIME st1, st2;
Функция GetLocalTime(&st1) - запишет в переменную текущее время. Т.о. записываешь время до запуска функции и после. То есть:
C++
1
2
3
GetLocalTime(&st1);
Function();
GetLocalTime(&st2);
Потом вычисляешь время и выводишь результат:
C++
1
2
3
4
5
double T1 = (double)(st1.wMinute*60*1000 + st1.wSecond*1000 + st1.wMilliseconds); //вычисляем время
     double T2 = (double)(st2.wMinute*60*1000 + st2.wSecond*1000 + st2.wMilliseconds);
     cout << endl << RUS("Для size = ") << size2[j] << "   \n" ;
     cout << RUS("время выполнения функции: ");
     cout << (T2 - T1) << RUS("   Миллисекунд") << endl;
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
17.11.2010, 21:22

Составить программы для пузырьковой сортировки и сортировки посредством выбора с применением оператора while
Доброго времени суток, очень нужна ваша помощь в решении данной проблемы, буду бесконечно благодарен. Составить программы для пузырьковой...

Сделать так, чтобы после сортировки вектора указатель показывал на тот же элемент, что и до сортировки
Есть вектор(STL) элементов. У меня есть указатель на определенный элемент. Я хочу сделать так, чтобы после сортировки этого вектора...

Написать две функции сортировки массива целых чисел, реализующих заданные алгоритмы сортировки – один из класса квадрат
#include &lt;stdio.h&gt; #include &quot;stdafx.h&quot; #include &quot;iostream&quot; #include &lt;stdlib.h&gt; #include &lt;time.h&gt; int main() { int sort; ...

Напишите функцию сортировки, похожую на функцию которая использовалась для сортировки массивов, с той разницей, что ее а
Напишите функцию сортировки, похожую на функцию которая использовалась для сортировки массивов, с той разницей, что ее аргументом должен...

Изменить метод "быстрой сортировки" на метод "сортировки вставками"
Как изменить метод &quot;интеративной быстрой сортировки&quot; на метод &quot;сортировки вставками «с конца массива»&quot;? Нужно изменить только метод...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
28
Ответ Создать тему
Новые блоги и статьи
Вступаем в новую фазу генерации favicons, векторную.
russiannick 02.11.2026
Теперь нет нужды скрывать что используется простой svg. Исходный код изображения помещаем в поле и жмем кнопку. Исходник преобразуется в вид корректный для помещения в favicon или в url(). Нажатие. . .
Генератор паролей (вариант №4)
Maks 01.11.2026
После публикации 3-го варианта генератора паролей, разослал его своим коллегам (с целью оценки), в итоге были получены следующие рекомендации: 1. Вернуть возможность использования знаков | 1 l I;. . .
Генератор паролей (вариант №3)
Maks 30.10.2026
Финальная версия генератора паролей 1С. Доработка решения в этот раз коснулась только визуальной части, а именно, добавлен реквизит ДопПараметры (тип Булево), который скрывает/ отображает реквизиты:. . .
Магическое мышление и магия, современная наука не отличима от магии (говорит ИИ Джемени)
zorxor 30.10.2026
Джемени, расскажи, пожалуйста, что такое магическое мышление, что такое магия, почему современная наука чем-то напоминает магию? Фраза «Любая достаточно развитая технология неотличима от магии». . .
За какое время ИИ может подобрать пароль по хешу (рассказывает Джемени ИИ)
zorxor 30.10.2026
Расскажи, Джемени, если известен хэш МД5, например, за сколько ИИ сможет подобрать соответствующий пароль? Искусственный интеллект (ИИ) может подобрать простой или средний по сложности пароль по. . .
Кто убил Suno? Почему наше солнышко погасло? (диалог с ИИ Джемени)
zorxor 30.10.2026
Как убивали Suno. Хронология. «Убийство» музыкальной нейросети Suno — это затяжной процесс, в котором технологический хайп стартапа разбился о жесткую реальность судебных исков от гигантов. . .
Генератор паролей (вариант №2)
Maks 30.10.2026
Обновленная версия ранее созданной обработки. Добавлены следующие реквизиты типа Булево: - Буквы; - Цифры; - Символы. Изменена логика команды "Сгенерировать" и процедуры "ПриОткрытии":. . .
Генератор паролей (вариант №1)
Maks 29.10.2026
Реализация из решения ниже выполнена исключительно по моей инициативе, дабы облегчить себе работу в создании паролей для администрируемых мною сервисов и пользователей. Самым главным критерием для. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru