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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Ульяниус
1 / 1 / 0
Регистрация: 15.08.2013
Сообщений: 132
#1

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

13.12.2013, 16:15. Просмотров 226. Ответов 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
#include  <stdio.h>
#include  <conio.h>
#include <time.h>
#include  <stdlib.h>
#include <alloc.h>
#define ESC 27
 void shake (int *x, int k,int s)
 {
   int t,L,R,N,j,i,sum=0,C=0,M=0;
   L=0;
   R=k-1;
   N=k-1;
   while (L<R)
   {
    for(j=R; j>L; --j)
    {
     if (x[j]<x[j-1])
     {
      t=x[j];
      x[j]=x[j-1];
      x[j-1]=t;
      N=j;
      M++;
     }
     C++;
    }
    L=N;
     for (j=L; j>R+1; ++j)
     {
      if (x[j]<x[j+1])
      {
       t=x[j];
       x[j]=x[j+1];
       x[j+1]=t;
       N=j;
       M++;
      }
      C++;
     }
     R=N;
   }
   for (i=0;i<k;++i)
   {
    sum+=x[i];
   }
  if (s!=sum)
   printf("\n Неверная контрольная сумма \n");
  else
   printf("\n M=%d, C=%d,  \n",M,C);
 }
 
void main ()
 {
  int i,n,sum;int *a; char key;
  do
  {
   sum=0;
   randomize();
   clrscr ();
   fflush(stdin);
   printf("\n Введите n   ");
   scanf("%d",&n);
   a=(int*)malloc(n*sizeof (int));
   for (i=0; i<n; i++)
    {
     a[i]=random(100);
     sum+=a[i]; 
    }
   
   shake(a,n,sum);
   free(a);
   puts ("Закончить работу*? (Да=Esc)");
   key=getch();
  }
  while (key!=ESC);
 }
Добавлено через 18 часов 33 минуты
Тишина.. никто не поможет?
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
13.12.2013, 16:15     Шейкерная сортировка
Посмотрите здесь:

Шейкерная сортировка массива - C++
Не удается с внизсходящего поменять сортировку на вверхсходящую #include &lt;iostream&gt; #include &lt;windows.h&gt; #include &lt;time.h&gt; ...

Шейкерная сортировка массива (в виде функции) - C++
Выполнить сортировку целочисленного массива(поиск в массиве) из n элементов. Алгоритм сортировки(поиска) Шейкер-сортировка, оформить в виде...

Шейкерная сортировка без использования while цикла - C++
Ребят, сделал шейкерную сортировку через два вложенных цикла - не работает. Не могу понять в чем проблема, подскажите пожалуйста. ...

Пирамидальная сортировка и сортировка Шелла - C++
Ребята помогите пожалуйста, я NEWBIE и не могу решить такая задача : Выполнить сортировку по убыванию. Пирамидальная сортировка и...

шейкерная сортировка - Pascal
нужно 3 примера (шейкерная сортировка) Турбо Паскаль.

Шейкерная сортировка. - Turbo Pascal
program Shaker; uses crt; var A:array of integer; N,i,k,x,j,d : integer; begin clrscr; write('Введите размер массива*...

Шейкерная сортировка. - Pascal ABC
Разработать алгоритм шейкерной сортировки. Отсортировать с помощью него массив.

Шейкерная сортировка - Pascal
Отсортировать строки массива целых чисел по убыванию.

Шейкерная сортировка - Pascal
Объясните пожалуйста суть шейкерной сортировки. Уже минут 30 пытаюсь разобраться, никак не могу. Необходимо сделать сортировку как...

Шейкерная сортировка - Delphi
Отсортировать строки массива целых чисел по убыванию. Шейкерная сортировка.


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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru