Быстрая сортировка Википедия

Быстрая сортировка Википедия [ · · · · ] [Блок-схема]-Быстра сортировка(Хоара) MT Дата: Понедельник, 10.05.2010, 14:55 | Сообщение # 1

Рядовой

Группа: Новичок

Сообщений: 2

[ 0 ]

Статус: Offline

Нужно упорядочить массив действительных чисел методом быстрой сортировки. Имеется блок-схема, составлял я. Препод проверил, говорит не работает твой алгоритм. Вопрос, что тут не так? Нужно сделать к среде.

Прикрепления: 9170406.png(22.6 Kb)

Сообщение отредактировал MT - Понедельник, 10.05.2010, 14:59

  ignorer Дата: Понедельник, 10.05.2010, 17:08 | Сообщение # 2

Генералиссимус

Группа: Модераторы

Сообщений: 602

[ 18 ]

Статус: Offline

я знаю что не работает. в данном случае представлена обычная пузырьковая сортировка. чтоб всё работало правильно, нужно этот цикл повторить несколько раз до тех пор, пока массив не будет просортирован. щас выложу код на паскале вашей проги и рабочей проги со всеми тестами и результатами.   ignorer Дата: Понедельник, 10.05.2010, 17:27 | Сообщение # 3

Генералиссимус

Группа: Модераторы

Сообщений: 602

[ 18 ]

Статус: Offline

и ещё одна ошибка: вместо i<=n должно быть i<n.
вот код на паскале по вашей блок-схеме (с учётом вышеуказанной ошибки):

Code

var a : array[1..100] of integer;
      i, d, n : integer;
begin
   cls;
   read(n);
   for i:=1 to n do read(a[i]);
   i:=1;
   while i<n do begin
    if a[i]<a[i+1] then begin
     d:=a[i];
     a[i]:=a[i+1];
     a[i+1]:=d;
    end;
    inc(i);
   end;
   for i:=1 to n do write(a[i], ' ');
end.


пример:
входные данные: 3 2 4 1 5
результат: 3 4 2 5 1

вот код, который должен быть:

Code

var a : array[1..100] of integer;
      i, d, n : integer;
      b : boolean;
begin
   cls;
   read(n);
   for i:=1 to n do read(a[i]);
   repeat
    b:=true;
    i:=1;
    while i<n do begin
     if a[i]<a[i+1] then begin
      d:=a[i];
      a[i]:=a[i+1];
      a[i+1]:=d;
      b:=false;
     end;
     inc(i);
    end;
   until b;
   for i:=1 to n do write(a[i], ' ');
end.


пример:
входные данные: 3 2 4 1 5
результат: 5 4 3 2 1

примечание по примерам в обоих случаях n=5

  PASCAL26 Дата: Понедельник, 10.05.2010, 19:33 | Сообщение # 4

Генералиссимус

Группа: Модераторы

Сообщений: 215

[ 23 ]

Статус: Offline

ну вообще то быстрая сортировка вот

Code


{быстрая сортировка}
const
   maxn = 100000;
Type
   DataType = extended;
var
   i,n:longint;
   buf,X:DataType;
   a:array[1..maxn]of DataType;

procedure Sort(L,R:Longint);
var
   j:longint;

begin
   i:=L; j:=R; X:=a[(i+j)shr 1];
   repeat
     while a[i]<X do inc(i);
     while a[j]>X do dec(j);
     if i<=j then begin
       buf:=a[i]; a[i]:=a[j]; a[j]:=buf;
       inc(i); dec(j);
     end;
   until i>j;
   if i<R then Sort(i,R);
   if j>L then Sort(L,j);
end;

begin
end.


но ее удобней применять когда n>1000, если меньше то и пузырек справится
пишу на с++, delphi, c# (нудные задачи небезвозмедно)
ps Если помог - щелкни +, и вам хорошо и мне приятно   MT Дата: Вторник, 11.05.2010, 17:43 | Сообщение # 5

Рядовой

Группа: Новичок

Сообщений: 2

[ 0 ]

Статус: Offline

Благодарю. Теперь осталось это переделать на С++. Ошибку понял.   GrihaI Дата: Среда, 12.05.2010, 10:06 | Сообщение # 6

Генерал-полковник

Группа: Участник

Сообщений: 89

[ 1 ]

Статус: Offline

Держи на СИ

Code


#include
#include
#include

void sort_array(int A,int size) // функция сортировки
{
  int sort=1,i,temp;
  while(sort!=0)
  {
   sort=0;
   for (i=0;i<size-1;i++)
   {
    if(A[i]>A[i+1])
       {
     temp=A[i];
     A[i]=A[i+1];
     A[i+1]=temp;
     sort++;
     break;
    }
    }
  }
}
void show(int A,int size)
{
  int i;
  printf("\nСодержимое массива:\n");
  for(i=0;i<size;i++)
   printf("%d\t",A[i]);
  printf ("\n");
}

void main()
{
  int i,size;
  int array_a;
  srand (time (NULL));
  printf ("Введите размер массива: ");
  scanf("%d",&size);
  array_a=(int )malloc(sizesizeof(int));
  for (i=0;i<size;i++)
   (array_a+i)=rand()%100;
  show(array_a,size);
  sort_array(array_a,size);
  show(array_a,size);
  printf ("\n");
}


Собираю деньги на инв. коляску. С предложениями писать в личку или мыло.  
  • Страница 1 из 1
  • 1

Блок схема для сортировки хоара 729
Быстрая сортировка Википедия 943
6.2. Расчет ленточного свайного фундамента под стену
Быстрая сортировка Википедия 486
Chevy-Niva : Просмотр темы - Чертёж
Быстрая сортировка Википедия 781
Велобагажник на крышу автомобиля
Быстрая сортировка Википедия 380
Искатель скрытой проводки своими руками: схемы
Быстрая сортировка Википедия 654
КЛУМБЫ, ЦВЕТУЩИАННЕЙ ВЕСНЫ ДО ПОЗДНЕЙ ОСЕНИ Дача, сад, огород
Быстрая сортировка Википедия 37
Быстрая сортировка Википедия 28
Быстрая сортировка Википедия 25
Быстрая сортировка Википедия 2
Быстрая сортировка Википедия 66
Быстрая сортировка Википедия 89
Быстрая сортировка Википедия 47
Быстрая сортировка Википедия 64
Быстрая сортировка Википедия 92
Быстрая сортировка Википедия 47