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

Шейкер сортировка - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Файловый ввод и поиск самого длинного слова в тексте http://www.cyberforum.ru/cpp-beginners/thread976292.html
Здравствуйте. Нужно написать программу, которая вводит текст, состоящий из нескольких предложений, находит самое длинное слово и определяет, сколько раз оно встретилось в тексте. Хочу, чтобы текст отображался в Memo (это хоть получилось, и на том спасибо), а найденное слово выводилось в ShowMessage. Проблемы уже при открытии файла. Где накосячила? if(OpenDialog1->Execute()) {...
C++ Странный калькулятор Привет, помогите пожалуйста исправить калькулятор. Когда ставлю знаки "-" или "+", выполняется умножение. #include <iostream> using namespace std; int main() { double a; double b; char znak; double result; cout<<"Vvedite a: "; http://www.cyberforum.ru/cpp-beginners/thread976290.html
C++ Прокомментируйте пожалуста программу
Что то я туплю, как-то все до меня не доходит толком. Прокомментируйте пожалуста программу, вернее два конструктора. Это ведь имено два конструктора? Смысл и что они делают и как друг с другом уживаются? Добавлено через 1 минуту // Листинг 9.11. // Передача константных указателей на объекты #include <string> #include <iostream> // для объекта cout using namespace std;
Проблемы с выделением памяти C++
Здравствуйте, я в своем проекте использую эту функцию #include <iostream> #include "windows.h" #include <wincrypt.h> #ifndef CALG_HMAC #define CALG_HMAC (ALG_CLASS_HASH | ALG_TYPE_ANY | ALG_SID_HMAC) #endif #ifndef CRYPT_IPSEC_HMAC_KEY
C++ Определить максимальное количество идущих подряд чётных чисел http://www.cyberforum.ru/cpp-beginners/thread976263.html
Как определить максимальное количество идущих подряд чётных чисел для такого, к примеру, ряда чисел: 1 2 2 23 4 2 14 9 18 88 4 5 2 2 34 0
C++ Вывести на экран сначала все цифры, входящие в текст, а затем все остальные литеры написать программу на C++ нужно Задан текст, заканчивающийся точкой. Вывести на экран сначала все цифры, входящие в него, а затем все остальные литеры. При написании программы нельзя пользоваться стандартными функциями обработки строк подробнее

Показать сообщение отдельно
_Mars_
0 / 0 / 0
Регистрация: 13.10.2013
Сообщений: 37
13.10.2013, 15:37     Шейкер сортировка
Здравствуйте. Столкнулся с задачей реализации Шейкер сортировки .Почитал теорию и понял , что она очень похожа на пузырьковую. Но столкнулся с примером кода и стало совсем ничего не понятно .
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
#include <iostream>
using namespace std;
 
int array[100];
 
void Sort(int col)
{
int trash=0;
bool f=true;
for (int i=1; (i<=col) && (f=true) ; i++)
{
f=false;
// проходим с лева на право
for (int j=i; j<=col-i; j++)
{   
// если число слева больше числа
if (array [j]>array [j+1]) 
{
// справа, то меняем местами
trash=array[j];
// справа собираются большие числа
array [j]=array [j+1];
array [j+1]=trash;
f=true;
}
}
 
// проходим с права на лево
for (int j=col-i-1; j>i ; j--)
{
// если число справа меньше числа
if (array [j]<array[j-1]) 
{
// слева, то меняем местами
trash=array[j];
// слева собираются меньшие числа
array [j]=array [j-1]; 
array [j-1]=trash; 
f=true; 
} 
} 
}
}
 
// вывод
void Out(int col)
{
for (int i=1; i<=col; i++)
cout << array [i] <<" ";
cout << endl;
}
 
// главная
int main()
{
int col_el;
 
// ввод данных 
cout << " Enter length of array"<< endl;
cin >> col_el; 
cout << " Enter array elements"<<endl; 
for (int n=1; n<=col_el ; n++) 
{
cout <<n<<" :" << "\t"; 
cin >> array[n];
}
 
// сортировка
Sort(col_el); 
 
// вывод результата
cout << "Result is :"<<endl; 
Out(col_el); 
cin >> col_el; 
 
return 0;
}
Я понял с прочитанного, что суть алгоритма в том, что данные сортируются "волнообразно", при этом программа сначала проходит массив слева направо, а потом справа налево. Когда идем слева, то собираем справа большие числа, а когда справа, то собираем слева меньшие.
Но вот как работает всё -нет .
Может кто сможет объяснить по простому , как работает сортировка Шейкера? Например , на числах 2,6,1,10,3
Как происходит сортировка?
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
 
Текущее время: 17:31. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru