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

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

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Создать объект - очередь с перегруженными операциями http://www.cyberforum.ru/cpp-beginners/thread1039304.html
Будьте добры помочь( Задание 1. Унарная операция Создать объект - очередь с перегруженными операциями ++ как функциями-членами, -- как дружественными функциями. (Как постфиксными так...
C++ Написать программу, которая позволяет во введенной строке поменять первые буквы каждого слова на прописные нужно составить текст программы, которая позволяет по введенной строке поменять первые буквы каждого слова на прописные. Вывести на экран символьную строку до и после изменения. p.s:знаю только... http://www.cyberforum.ru/cpp-beginners/thread1039289.html
Двумерный массив в степени C++
Ребят, задание на фото. Вроде сделал как надо, но ругается на перегруженную функцию pow.. помогите исправить.. #include <iostream> // бибилиотека ввода/вывода #include <iomanip> // библиотека для...
Двухмерный массив C++
Как в двухмерном массиве выделить, а точнее работать с элементами массива которые находятся до главной диагонали. Вопрос в том как сделать главную диагональ НЕ квадратного массива? Добавлено через...
C++ В произвольном тексте найти и отпечатать все слова длиной 5 символов http://www.cyberforum.ru/cpp-beginners/thread1039264.html
Собственно, задача. Если можно, хотелось бы минимум мудрённого кода - простейшие операторы. Ну или с комментариями. Добавлено через 1 час 35 минут int main() { system("cls"); setlocale(0,...
C++ Классовая борьба Visual Studio 10 express ни с того ни с сего начал ругаться на существующие классы, хотя раньше воспринимал все нормально.. с чем может быть связано? #include <stdio.h> #include <conio.h>... подробнее

Показать сообщение отдельно
Ульяниус
1 / 1 / 0
Регистрация: 15.08.2013
Сообщений: 132

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

13.12.2013, 16:15. Просмотров 235. Ответов 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 минуты
Тишина.. никто не поможет?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru