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

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

Восстановить пароль Регистрация
 
Ульяниус
 Аватар для Ульяниус
1 / 1 / 0
Регистрация: 15.08.2013
Сообщений: 132
13.12.2013, 16:15     Шейкерная сортировка #1
Неправильно сортирует шейкерной сортировкой, почему-то не хочет проходить справа на лево массив, мне так кажется. Потому что начало хорошее - наименьшее число перемещается в первую позицию, а дальше что-то не так .
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++
Быстрая сортировка(сортировка Хоара). Отсортировать фрагмент массива C++
шейкерная сортировка + сортировка слиянием C++
2 сортировки: пирамидальная сортировка и сортировка слиянием C++
Шейкерная сортировка массива (в виде функции) C++
Быстрая сортировка (сортировка Хоара) для связных списков C++
C++ Сортировка слиянием. В каком куске кода происходит сортировка и каким именно образом?
C++ Сортировка Шелла. Написал программу, не могу понять, почему сортировка не выполняется

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

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

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