Форум программистов, компьютерный форум CyberForum.ru

алгоритмы сортировки - C++

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 10, средняя оценка - 5.00
Skon
1 / 1 / 0
Регистрация: 02.01.2011
Сообщений: 7
02.01.2011, 01:35     алгоритмы сортировки #1
нужно выполнить сортировку массива целых чисел 3 методами: простыми включениями, простым выбором, простым обменом
подскажите пожалуйста как исправить программу чтобы был только 1 массив и заново не инициализировать его перед каждой сортировкой

вот исходный текст выполнен с использованием Borland C++ Builder 6.0


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
#include <vcl.h>
#pragma hdrstop
#include <iostream.h>
void insertSort( int* mas, const int n);
void selectSort( int* mas, const int n);
void bubleSort ( int* mas, const int n);
//---------------------------------------------------------------------------
 
#pragma argsused
int main()
{
const int n=15;// количество элементов массива
int mass[n] = {8, 23, 80, 71, 76, 28, 89, 5, 18, 68, 91, 50, 53, 2, 17};
int i, buff;
for (i=0; i<n; i++) cout <<mass[i]<<' ';
cout<<'\n';
//сортировка выбором
selectSort (mass,n);
//for (i=0; i<n-1; i++) { //n-1 ищем наименьший элемент
//принимаем за наименьший первый из рассматриваемых элементов
//int imin = i;
//поиск номера минимального элемента из неупорядоченный
//for (int j=i+1;j<n;j++)
//если нашли меньший элемент запоминаем его номер
//if (mass[j]<mass[imin])imin=j;
//buff=mass[i]; //обмен элементов
//mass[i]=mass[imin]; //с номерами
//mass[imin]=buff; //i и imin
//}
//вывод упорядоченного массива
for (i=0;i<n;i++)cout <<mass[i]<<' ';
cout<<'\n';
//сортировка вставками
int mass1[n]= {8, 23, 80, 71, 76, 28, 89, 5, 18, 68, 91, 50, 53, 2, 17};
insertSort(mass1,n) ;
int j, k;
//for (i=0; i<n; i++)
//{ buff=mass1[i];
//for (j=i-1; j>=0 && buff<mass1[j]; j--)
//mass1 [j +1]= mass1 [ j ]; //сдвиг на одну позицию
//mass1 [j+1]=buff; }
//вывод упорядоченного массива
for (i=0;i<n;i++)cout <<mass1[i]<<' ';
cout<<'\n';
//сортировка обменом
int mass2[n]= {8, 23, 80, 71, 76, 28, 89, 5, 18, 68, 91, 50, 53, 2, 17};
bubleSort(mass2,n);
//for (k=0;k<n-1;k++){
//for (i=0;i<n-1;i++) if(mass2[i]>mass2[i+1]) {buff=mass2[i];mass2[i]=mass2[i+1];mass2[i+1]=buff;} }
//вывод упорядоченного массива
for (i=0;i<n;i++)cout <<mass2[i]<<' ';
cout<<'\n';
char out;
while (!cin.get(out));
return 0;
}
//--------------------------
 
//сортировка вставками
void insertSort( int* mas,const int n) {
int i,j,value;
for(i = 1; i < n; i++) {
value = mas[i];
for (j = i-1; (j >= 0) && (mas[j] > value); j--){
mas[j+1] = mas[j];
}
mas[j+1] = value;
}
}
//сортировка выбором
void selectSort (int* mas,const int n){
int i,j,buff;
for (i=0; i<n-1; i++) { //n-1 ищем наименьший элемент
//принимаем за наименьший первый из рассматриваемых элементов
int imin = i;
//поиск номера минимального элемента из неупорядоченный
for (int j=i+1;j<n;j++)
//если нашли меньший элемент запоминаем его номер
if (mas[j]<mas[imin])imin=j;
buff=mas[i]; //обмен элементов
mas[i]=mas[imin]; //с номерами
mas[imin]=buff; //i и imin
}
}
//сортировка обменом
void bubleSort (int* mas,const int n){
int k,i,buff;
for (k=0;k<n-1;k++){
for (i=0;i<n-1;i++) if(mas[i]>mas[i+1]) {buff=mas[i];mas[i]=mas[i+1];mas[i+1]=buff;} }
}
 Комментарий модератора 
Используйте теги форматирования кода.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
02.01.2011, 01:35     алгоритмы сортировки
Посмотрите здесь:

Алгоритмы Сортировки C++
STL алгоритмы сортировки C++
C++ Алгоритмы сортировки массивов
Алгоритмы сортировки массивов C++
Алгоритмы сортировки. Подсчетом C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
panicwassano
590 / 558 / 20
Регистрация: 07.11.2010
Сообщений: 2,004
02.01.2011, 02:11     алгоритмы сортировки #2
создать динамически с рандомными значениями, после сортировки удалить, оформить ввиде процедуры
Skon
1 / 1 / 0
Регистрация: 02.01.2011
Сообщений: 7
02.01.2011, 02:36  [ТС]     алгоритмы сортировки #3
мне рандомные значения не пойдут

целочисленный одномерный массив уже определен в задаче, нужно только выполнить по шагам его сортировку разными методами
panicwassano
590 / 558 / 20
Регистрация: 07.11.2010
Сообщений: 2,004
02.01.2011, 03:55     алгоритмы сортировки #4
создай второй массив и туда записывай отсортированные значения
Skon
1 / 1 / 0
Регистрация: 02.01.2011
Сообщений: 7
02.01.2011, 11:01  [ТС]     алгоритмы сортировки #5
верно спасибо
только не понимаю как это сделать, я же передаю массив в качестве аргумента в процедуру, при выполнение процедуры он меняется-сортируется
Минич
 Аватар для Минич
66 / 66 / 3
Регистрация: 26.11.2010
Сообщений: 123
02.01.2011, 21:26     алгоритмы сортировки #6
При передаче массива функции в виде аргумента передается адрес на первый элемент массива (ссылка), т.е. массив не копируется, а обрабатывается исходный массив.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
05.01.2011, 20:49     алгоритмы сортировки
Еще ссылки по теме:

C++ векторы и алгоритмы сортировки
C++ Алгоритмы внешней сортировки
Алгоритмы сортировки и поиска C++

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

Или воспользуйтесь поиском по форуму:
Skon
1 / 1 / 0
Регистрация: 02.01.2011
Сообщений: 7
05.01.2011, 20:49  [ТС]     алгоритмы сортировки #7
еще эффективность нужно оценить кажется
что считать количество обменов( перестановок) или количество циклов или количество сравнений?

"Выполнить по шагам сортировку массива целых чисел методом простой сортировки", что тут имеется в ввиду?
Yandex
Объявления
05.01.2011, 20:49     алгоритмы сортировки
Ответ Создать тему
Опции темы

Текущее время: 13:26. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru