Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.91/22: Рейтинг темы: голосов - 22, средняя оценка - 4.91
0 / 2 / 1
Регистрация: 18.10.2013
Сообщений: 312

Сортировки: пять методов на выбор в одной программе

31.03.2014, 21:03. Показов 5167. Ответов 40
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Помогите написать програмку которая сортирует пьятьма методами на выбор 1) вставками 2) выбором 3) обменом (пузырьком) 4)быстрая сортировка 5) слиянием.
В нете все ети методы есть, но связать в одну прогу у меня не получается.

Наработки есть но на паскале а как оказалось теперь надо на С++
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
31.03.2014, 21:03
Ответы с готовыми решениями:

Реализация нескольких методов шифрования в одной программе
Здравствуйте, помогите реализовать Алгоритм Евклида, Шифр Цезаря, Шифр Виженера и Магический квадрат в одной программе с графическим...

Несколько алгоритмов сортировки в одной программе
Здравствуйте, форумчане. Подскажите пожалуйста, у меня есть 5 кодов программ. Суть в том, что каждая из них сортирует динамический...

Оформите программу для реализации в одной программе рекурсивных методов вычисления факториала
Оформите программу для реализации в одной программе рекурсивных методов вычисления факториала числа n: а) Метод 1 – вычисление...

40
0 / 2 / 1
Регистрация: 18.10.2013
Сообщений: 312
06.04.2014, 19:21  [ТС]
Студворк — интернет-сервис помощи студентам
Я пробовал но нифига не получилось . Вот и жду помощи

Добавлено через 29 минут
Сам прикол все пишут что ето просто но никто не может сделать)
0
 Аватар для IrineK
2023 / 1641 / 425
Регистрация: 23.02.2011
Сообщений: 6,002
Записей в блоге: 25
06.04.2014, 19:25
Цитата Сообщение от Anriuser Посмотреть сообщение
вы решите мою судьбу
Цитата Сообщение от Anriuser Посмотреть сообщение
у меня халява не пройдет
Вот если подумать, чего сам написал , то можно прийти к правильным выводам.
0
4 / 4 / 1
Регистрация: 17.09.2013
Сообщений: 179
06.04.2014, 19:48
Anriuser, скинь код уже, пробователь.
Люди воспринимающие этот форум как центр бесплатных лаб бесят уже
0
0 / 2 / 1
Регистрация: 18.10.2013
Сообщений: 312
08.04.2014, 13:20  [ТС]
IrineK кто не рискует тот не пьет шампанского :

Добавлено через 1 минуту
Код есть на паскале, но мне на С++ надо))))

Добавлено через 1 минуту
И все же я в поиске добрых людей) которые помогут)

Добавлено через 4 часа 11 минут
Но никто не помогает)

Добавлено через 13 часов 56 минут
Народ завтра буду здавать выручайте!!!)))
0
08.04.2014, 13:27

Не по теме:

Цитата Сообщение от Anriuser Посмотреть сообщение
IrineK кто не рискует тот не пьет шампанского
И отчего же теперь штаны мокрые: от риска или от шампанского?

0
0 / 2 / 1
Регистрация: 18.10.2013
Сообщений: 312
08.04.2014, 21:58  [ТС]
IrineK, может вы мне поможете?))))))

Добавлено через 28 минут
Хелп народ!

Добавлено через 1 час 25 минут
ПОМОГИТЕ!!!

Добавлено через 1 час 27 минут
HEEEEELP!

Добавлено через 5 часов 4 минуты
Да помогите!!
0
 Аватар для metallix
10 / 10 / 5
Регистрация: 07.09.2013
Сообщений: 48
08.04.2014, 22:10
За это время сам уже мог бы сделать.
Или скинь хотя бы что сам написал.
0
0 / 2 / 1
Регистрация: 18.10.2013
Сообщений: 312
08.04.2014, 22:23  [ТС]
сейчас вам в лс скину

Добавлено через 40 секунд
СПС всем можно закрывать тему, никто н епомогает током)

Добавлено через 6 минут
сори за ошибки спешу просто
0
 Аватар для metallix
10 / 10 / 5
Регистрация: 07.09.2013
Сообщений: 48
08.04.2014, 22:52
Так уж и быть)) Что надо, надеюсь сам уже осилишь доделать)
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
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
#include <iostream>
#include <cstdlib>
 
using namespace std;
 
void bubbleSort(int *arr, int size);
void insertSort(int *arr, int size);
void selectSort(int *arr, int size);
void quickSort(int *arr, int N);
void merge(int*,int*,int,int,int);
void mergesort(int *a, int*b, int low, int high);
 
int main()
{
    int n=0;
    srand(time(NULL));
 
    cout<<"Size of array: ";
    cin>>n;
 
    int array[n];
 
    cout<<"Array: \n";
        for(int i=0;i<n;i++)
        {
            array[i]=rand()%50;
            cout<<array[i]<<" ";
        }
        cout<<"\n\n";
//---------------------------------------------------//
cout<<"Bubble Sort:\n\n";
 
bubbleSort(array,n);
    for(int i=0;i<n;i++)
        cout<<array[i]<<" ";
 
cout<<"\n\n------------------------------\n\n";
 
//---------------------------------------------------//
 
cout<<"Insert Sort:\n\n";
 
insertSort(array,n);
    for(int i=0;i<n;i++)
        cout<<array[i]<<" ";
 
cout<<"\n\n------------------------------\n\n";
 
//---------------------------------------------------//
 
cout<<"Select Sort:\n\n";
 
selectSort(array,n);
    for(int i=0;i<n;i++)
        cout<<array[i]<<" ";
 
cout<<"\n\n------------------------------\n\n";
 
//---------------------------------------------------//
 
cout<<"Quick Sort:\n\n";
 
quickSort(array,n);
    for(int i=0;i<n;i++)
        cout<<array[i]<<" ";
 
cout<<"\n\n------------------------------\n\n";
cout<<"Merge Sort:\n\n";
int num;
num = sizeof(array)/sizeof(int);
int b[num];
 
mergesort(array,b,0,num-1);
    for(int i=0; i<num; i++)
        cout<<array[i]<<" ";
cout<<"\n\n------------------------------\n\n";
 
system("pause>>null");
return 0;
}
 
 
void bubbleSort(int *arr, int size)
{
    int tmp;
 
    for(int i = 0; i < size - 1; ++i)
    {
        for(int j = 0; j < size - 1; ++j)
        {
            if (arr[j + 1] < arr[j])
            {
                tmp = arr[j + 1];
                arr[j + 1] = arr[j];
                arr[j] = tmp;
            }
        }
    }
}
 
void insertSort(int *arr, int size)
{
    int tmp;
    for (int i = 1, j; i < size; ++i)
    {
        tmp = arr[i];
        for (j = i - 1; j >= 0 && arr[j] > tmp; --j)
            arr[j + 1] = arr[j];
        arr[j + 1] = tmp;
    }
}
 
void selectSort(int *arr, int size)
{
    int tmp;
    for(int i = 0; i < size; ++i)
    {
        int pos = i;
        tmp = arr[i];
        for(int j = i + 1; j < size; ++j)
        {
            if (arr[j] < tmp)
           {
               pos = j;
               tmp = arr[j];
           }
        }
        arr[pos] = arr[i];
        arr[i] = tmp;
    }
}
 
void quickSort(int *a, int N)
{
  long i = 0, j = N;
  int temp, p;
 
  p = a[ N>>1];
 
  do {
    while ( a[i] < p ) i++;
    while ( a[j] > p ) j--;
 
    if (i <= j)
    {
      temp = a[i];
      a[i] = a[j];
      a[j] = temp;
      i++; j--;
    }
  } while ( i<=j );
 
  if ( j > 0 ) quickSort(a, j);
  if ( N > i ) quickSort(a+i, N-i);
}
 
void mergesort(int *a, int*b, int low, int high)
{
    int pivot;
    if(low<high)
        {
            pivot=(low+high)/2;
            mergesort(a,b,low,pivot);
            mergesort(a,b,pivot+1,high);
            merge(a,b,low,pivot,high);
        }
}
 
void merge(int *a, int *b, int low, int pivot, int high)
{
int h,i,j,k;
h=low;
i=low;
j=pivot+1;
 
while((h<=pivot)&&(j<=high))
{
    if(a[h]<=a[j])
    {
        b[i]=a[h];
        h++;
    }
    else
    {
        b[i]=a[j];
        j++;
    }
    i++;
}
if(h>pivot)
{
    for(k=j; k<=high; k++)
    {
        b[i]=a[k];
        i++;
    }
}
else
{
    for(k=h; k<=pivot; k++)
    {
        b[i]=a[k];
        i++;
    }
}
    for(k=low; k<=high; k++) a[k]=b[k];
}
2
0 / 2 / 1
Регистрация: 18.10.2013
Сообщений: 312
08.04.2014, 23:25  [ТС]
Ура!!! А что там надо доделать то?)
Спасибо большое)

Добавлено через 10 минут
Не компилится(

Добавлено через 8 минут
metallix, Вы сдесь?

Добавлено через 10 минут
народ да хелп компильните прогу!
0
 Аватар для metallix
10 / 10 / 5
Регистрация: 07.09.2013
Сообщений: 48
08.04.2014, 23:53
Что именно? какие ошибки ?
0
0 / 2 / 1
Регистрация: 18.10.2013
Сообщений: 312
09.04.2014, 00:00  [ТС]
int array[n];

Добавлено через 19 секунд
expected constant expression

Добавлено через 1 минуту
int b[num];
такая же ошибка
0
 Аватар для IrineK
2023 / 1641 / 425
Регистрация: 23.02.2011
Сообщений: 6,002
Записей в блоге: 25
09.04.2014, 00:06
metallix,
ТС нужно эти массивы создавать динамически - у него компилятор требует.
0
0 / 2 / 1
Регистрация: 18.10.2013
Сообщений: 312
09.04.2014, 00:10  [ТС]
О_о IrineK мне еще надо отчет по етому сделать скажите если можете как)
0
 Аватар для IrineK
2023 / 1641 / 425
Регистрация: 23.02.2011
Сообщений: 6,002
Записей в блоге: 25
09.04.2014, 00:20
0
0 / 2 / 1
Регистрация: 18.10.2013
Сообщений: 312
09.04.2014, 00:36  [ТС]
IrineK, ну я пошутил)

Добавлено через 5 минут
IrineK, ну а если можете то серьезно попрошу вас поправить код

Добавлено через 7 минут
IrineK, аааа ну где вы(
0
76 / 78 / 41
Регистрация: 23.03.2011
Сообщений: 148
09.04.2014, 00:41
замените все строки с объявлением массивов, подобные этой
C++
1
 int array[n];
на
C++
1
int *array=new int[n]
0
0 / 2 / 1
Регистрация: 18.10.2013
Сообщений: 312
09.04.2014, 01:28  [ТС]
Там изза етого еще появились ошибки(

Добавлено через 35 секунд
Помогите исправить код, мне через 6 часов вставать + еще отчет сделать надо((

Добавлено через 12 минут
Для того кто знает ето 5 мин чтоб исправить помогите же(

Добавлено через 19 минут
Да помогите пожалуйста!!!

Добавлено через 10 минут
Ну помогите же

Добавлено через 45 секунд
Короче ладно никто нифига тут мне не помог толком спасибо всем тем что хоть попытались
0
76 / 78 / 41
Регистрация: 23.03.2011
Сообщений: 148
09.04.2014, 01:53
задолбал, там было всего исправить 2 строки и сменить имя у массива

вот рабочий ПРАВИЛЬНЫЙ код, с выбором метода сортировки и с правильным использовании методов сортировки, надёрганных с интернета(в основном данного форума кроме сортировки слиянием), в ранее выложенном вырианте не было выбора метода сортировки, кроме того в быстрой сортировке в этом коде нужно передавать массив и индекс последнего элемента, а не количество элементов из-за чего появляется левый элемент массива

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
160
161
162
163
164
165
166
167
168
169
170
171
172
173
 #include <iostream>
#include <time.h>
using namespace std;
 
int opred_mas(int* Arr, int size);    
template< class T > void selectSort(T* arr, int size);
template< class T > void bubbleSort(T* arr, int size);
template< class T > void insertSort(T* a, int size);
template<class T> void quickSortR(T* a, long N);
template<class T> void merge(T* a, int l, int r);
 
int main()
{
    setlocale(0,"");
    int k=10;     //константа размера массива
    cout<<"Введите количество элементов массива\n";
    cin >>k;
 
    int *Arr1;      //указатель обьявляется, для использования динамического массива
    Arr1=new int [k];     //создание динамического массива
       
    cout<<"Полученный массив\n";
    opred_mas(Arr1,k);
    unsigned int H;
    cout<<"Нажмите 1, если вы хотите провести сортироку методом выбора"<<endl;
    cout<<"Нажмите 2, если вы хотите провести сортироку методом пузырька"<<endl;
    cout<<"Нажмите 3, если вы хотите провести сортироку методом вставок"<<endl;
    cout<<"Нажмите 4, если вы хотите провести сортироку методом быстрой сортировки"<<endl;
    cout<<"Нажмите 5, если вы хотите провести сортироку методом слияния "<<endl;
    cout<<"нажмите 0, если вы хотите выйти"<<endl;
    cin>>H;
    
    switch(H)
    {
        case 1:
            selectSort(Arr1,k);
            break;
        case 2:
            bubbleSort(Arr1,k);
            break;
        case 3:
            insertSort(Arr1,k);
            break;
        case 4:
            quickSortR(Arr1,k-1);
            break;
        case 5:
            merge(Arr1,0,k-1);
            break;
        default:
            exit(0);
    }
    
    
    cout<<endl;
    for(int i=0;i<k;++i)  cout<<Arr1[i]<<" ";
    system("pause");
}
 
int opred_mas(int* Arr, int size)       //функция задания элементов массива
{
    //srand(time(NULL));
    for(int i=0;i<size;++i)
    {
        Arr[i]=rand()%100-50;
        cout<<Arr[i]<<" ";
    }
    cout<<endl;
    return 0; 
}
 
template< class T > void selectSort(T* arr, int size) // сортировка выбором
{
    T tmp;
    for(int i = 0; i < size; ++i) // i - номер текущего шага
    { 
        int pos = i; 
        tmp = arr[i];
        for(int j = i + 1; j < size; ++j) // цикл выбора наименьшего элемента
        {
            if (arr[j] < tmp) 
           {
               pos = j; 
               tmp = arr[j]; 
           }
        }
        arr[pos] = arr[i]; 
        arr[i] = tmp; // меняем местами наименьший с a[i]
    }
}
 
template< class T > void bubbleSort(T* arr, int size)// пузырьком
{
    T tmp;
 
    for(int i = 0; i < size - 1; ++i) // i - номер прохода
    {            
        for(int j = 0; j < size - 1; ++j) // внутренний цикл прохода
        {     
            if (arr[j + 1] < arr[j]) 
            {
                tmp = arr[j + 1]; 
                arr[j + 1] = arr[j]; 
                arr[j] = tmp;
            }
        }
    }
}
 
template< class T > void insertSort(T* a, int size) // вставками
{
    T tmp;
    for (int i = 1, j; i < size; ++i) // цикл проходов, i - номер прохода
    {
        tmp = a[i]; 
        for (j = i - 1; j >= 0 && a[j] > tmp; --j) // поиск места элемента в готовой последовательности 
            a[j + 1] = a[j];    // сдвигаем элемент направо, пока не дошли
        a[j + 1] = tmp; // место найдено, вставить элемент    
    }
}
 
template<class T> void quickSortR(T* a, long N) { // быстрая
// На входе - массив a[], a[N] - его последний элемент.
 
  long i = 0, j = N;        // поставить указатели на исходные места
  T temp, p;
 
  p = a[ N>>1 ];        // центральный элемент
 
  // процедура разделения
  do {
    while ( a[i] < p ) i++;
    while ( a[j] > p ) j--;
 
    if (i <= j) {
      temp = a[i]; a[i] = a[j]; a[j] = temp;
      i++; j--;
    }
  } while ( i<=j );
 
  // рекурсивные вызовы, если есть, что сортировать 
  if ( j > 0 ) quickSortR(a, j);
  if ( N > i ) quickSortR(a+i, N-i);
}
 
template<class T> void merge(T* a, int l, int r) {
    if (r == l)
        return;
    if (r - l == 1) { 
        if (a[r] < a[l])
            swap(a[r], a[l]);
        return;
    }
    int m = (r + l) / 2;
    merge(a,l, m);
    merge(a,m + 1, r);
    T *buf=new T[r];
    int xl = l;
    int xr = m + 1;
    int cur = 0;
    while (r - l + 1 != cur) {
        if (xl > m)
            buf[cur++] = a[xr++];
        else if (xr > r)
            buf[cur++] = a[xl++];
        else if (a[xl] > a[xr])
            buf[cur++] = a[xr++];
        else buf[cur++] = a[xl++];
 
    }
    for (int i = 0; i < cur; i++)
        a[i + l] = buf[i];
}
П.С. вроде бы ничего не напутал когда переделывал сортировку слиянием используя шаблон (чтобы работала с любым типом данных), но точно (проверял) она работает с типом int, остальные должны работать в теории (но не проверял)
2
0 / 2 / 1
Регистрация: 18.10.2013
Сообщений: 312
09.04.2014, 02:00  [ТС]
Наконецто спасибо большое)
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
09.04.2014, 02:00

Реализация нескольких алгоритмов сортировки в одной программе
1)Пузырьком 2)Простейшая сортировка 3)сортировка выбором 4)сортировка вставками 5)сортировка подсчетом Нужно написать все это в...

Напишите реализацию методов, предоставляющих доступ к данным класса. Отобразите в программе работу этих методов
Реализация методов класса. Напишите реализацию методов, предоставляющих доступ к данным класса. Отобразите в программе...

Исправить пять ошибок в программе
program h; uses crt; var f:Ошибка1 n:integer; procedure factorial(n:integer;var f:longint); begin Ошибка2 n=0 then f:=Ошибка3...

Визуализация методов сортировки
Здравствуйте. Необходимо написать курсовую на тему Визуализация методов сортировки. Подскажите пожалуйста возможно ли в C# такое: создаешь...

Визуализация методов сортировки
Подскажите пожалуйста. Как можно графически(например в виде шкал или каких-нибудь фигур) изобразить сравнение методов сортировки массива?...


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

Или воспользуйтесь поиском по форуму:
40
Ответ Создать тему
Новые блоги и статьи
Особенности gif сгенерированных в Си
russiannick 21.10.2026
Рассмотрим генерацию gif файлов, которые в Си имеют свои особенности. Gif представляет собой графический формат популярный в интернете. Посмотрим на палитру. Gif файл сгенерированный в си отличается. . .
FPS контроллер с анимированными Y-Bot и 3D-звуком miniaudio (Box3D, Recast, BehaviorTree.CPP, ozz-animation, ImGui, OpenGL и SDL3)
8Observer8 18.10.2026
Содержание блога | English Version Полное мультиплатформенное руководство по стартовому проекту с FPS-контроллером игрока, анимированными роботами Y-Bot с 4-слойным блендингом, 3D-физикой Box3D,. . .
Локальный http сервер
Argus19 17.10.2026
Локальный http сервер На работе, на двух локальных компьютерах круглосуточно работают программы опроса приборов с записью в книги Excel,которые раз в сутки записываются на сервер компании. Т. к. . . .
Копировать Windows на новый диск на UEFI
damix 17.10.2026
https:/ / uriesk. wordpress. com/ 2016/ 11/ 01/ move-window-10-to-ssd-on-a-uefi-dualboot-system-with-basic-linux-tools/ TL DR Вставляем диск, а старый подключаем через переходник, грузимся с лайва. . .
ИИ не может найти нужный язык в списке
Supersumestria 05.10.2026
Я ему даю вот такое изображение и прошу найти и подчеркнуть немецкий язык. Возвращает он вот это: https:/ / i. **********/ vqBWLe2. png Нужную строчку в 3й колонке просто выдумал. . Это. . .
Новая последняя моя музыка в SUNO
zorxor 05.10.2026
Здравствуйте, дорогие мои друзья! С большой радостью я хотел бы представить вам свою новую последнею музыку, которую сгенерировала мне по моей просьбе нейросеть SUNO. С уважением, zorxor. Это. . .
Программный домашний кинотеатр
russiannick 27.09.2026
Сподобился на программный домашний кинотеатр. В качестве ЯВУ по традиции выбрал js. В помощники взял Яндекс-Алису. Было создано три зала на разные интересы. исторические и ретро сериал Хичкок. . .
Беседа с ИИ о программистах, недопускающих к созданию и правке кода генеративные ИИ и причины этого
zorxor 21.09.2026
Раньше я радовался или получал некоторые эмоции, пусть небольшие, но всё же, от самого процесса написания кода, рекомпиляции и запуска, видя постепенное развитие программы и прочее. А теперь лень. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru