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

Нужен пример шейкерной сортировки - C++

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 74, средняя оценка - 4.89
Stas12
0 / 0 / 0
Регистрация: 20.10.2011
Сообщений: 102
20.10.2011, 21:08     Нужен пример шейкерной сортировки #1
Написать программу шейкерной сортировки по возрастанию.Алгоритм представляет собой улучшеную пузырьковую сортировку , использующий "всплытие легкого" и "погружение тяжелого" элементов. Меняются одновременно и правая и левая границы массива.Никак не могу понять что делать..
Лучшие ответы (1)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
20.10.2011, 21:08     Нужен пример шейкерной сортировки
Посмотрите здесь:

Нужен пример интерфейса C++
Нужен пример хэширования C++
C++ Нужен пример турнирной сортировки
C++ Нужен пример с массивами
C++ Нужен пример класса
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Thinker
Эксперт C++
 Аватар для Thinker
4215 / 2189 / 150
Регистрация: 26.08.2011
Сообщений: 3,802
Записей в блоге: 5
20.10.2011, 21:43     Нужен пример шейкерной сортировки #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
void SheikerSort(int *a, const int n)
    {
       int l, r, i, k, buf;
       k = l = 0;
       r = n - 2;
       while(l <= r)
       {
          for(i = l; i <= r; i++)
             if (a[i] > a[i+1])
             {
                buf = a[i]; a[i] = a[i+1]; a[i+1] = buf;
                k = i;
             }
          r = k - 1;
          for(i = r; i >= l; i--)
             if (a[i] > a[i+1])
             {
                buf = a[i]; a[i] = a[i+1]; a[i+1] = buf;
                k = i;
             }
          l = k + 1;
       }
    }
Stas12
0 / 0 / 0
Регистрация: 20.10.2011
Сообщений: 102
20.10.2011, 22:14  [ТС]     Нужен пример шейкерной сортировки #3
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
#include <stdio.h>
#include <math.h>
#include <conio.h>
#include <locale.h>
void SheikerSort(int *a, const int n);
int main ()
 
{   
void SheikerSort(int *a, const int n)
        {
           int l, r, i, k, buf;
           k = l = 0;
           r = n - 2;
           while(l <= r)
           {
              for(i = l; i <= r; i++)
                 if (a[i] > a[i+1])
                 {
                    buf = a[i]; a[i] = a[i+1]; a[i+1] = buf;
                    k = i;
                 }
              r = k - 1;
              for(i = r; i >= l; i--)
                 if (a[i] > a[i+1])
                 {
                    buf = a[i]; a[i] = a[i+1]; a[i+1] = buf;
                    k = i;
                 }
              l = k + 1;
           }
        }
                        
}
не работает что-то((
Thinker
Эксперт C++
 Аватар для Thinker
4215 / 2189 / 150
Регистрация: 26.08.2011
Сообщений: 3,802
Записей в блоге: 5
20.10.2011, 22:16     Нужен пример шейкерной сортировки #4
Сообщение было отмечено автором темы, экспертом или модератором как ответ
Так надо было правильно вызывать функцию:
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
#include<stdio.h>
void SheikerSort(int *a, const int n)
{
           int l, r, i, k, buf;
           k = l = 0;
           r = n - 2;
           while(l <= r)
           {
              for(i = l; i <= r; i++)
                 if (a[i] > a[i+1])
                 {
                    buf = a[i]; a[i] = a[i+1]; a[i+1] = buf;
                    k = i;
                 }
              r = k - 1;
              for(i = r; i >= l; i--)
                 if (a[i] > a[i+1])
                 {
                    buf = a[i]; a[i] = a[i+1]; a[i+1] = buf;
                    k = i;
                 }
              l = k + 1;
           }
        }
 
int main()
{
   int i, a[5] = {50, 40, 30, 20, 10};
   SheikerSort(a, 5);
   for(i = 0; i < 5; i++)
      printf("%d ", a[i]);
   getchar();
}
Stas12
0 / 0 / 0
Регистрация: 20.10.2011
Сообщений: 102
20.10.2011, 22:18  [ТС]     Нужен пример шейкерной сортировки #5
спасибо)))
можно чуток комментариев?)))
libra
Сообщений: n/a
24.01.2013, 22:20     Нужен пример шейкерной сортировки #6
а как сделать Шейкерную сортировку по убыванию?
Yandex
Объявления
24.01.2013, 22:20     Нужен пример шейкерной сортировки
Ответ Создать тему
Опции темы

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