Поиск:

Ответ в темуСоздание новой темы Создание опроса
> QuickSort 
:(
    Опции темы
fest80
  Дата 15.2.2006, 21:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 1
Регистрация: 15.2.2006

Репутация: нет
Всего: нет



Помогите пожалуйста!
У нас в универе препод требует написать QuickSort, но не обычный а по его собственному алгоритму, который он давал на лекции. Нужно в нем разобраться и сделать рабочим. Как я понял массив сначала делится на 3 части, а потом к каждой части применяется алгоритм частичной сортировки (хз что такое).
Вот эта бяка из двух функций:
Код

void PS(int A[], int S,int L,int H,int HL,int LH) 
{ 
   int LX,HX,HE,R; 
   LX=L; HX=H; HE=H; 
 while(LX<=HX) 
 { 
    R=A[HX]; 
    if(R<S) 
    { 
       A[HX]=A[LX]; 
       A[LX++]=R; 
     } 
     else if(R>S) 
             { 
                A[HX]=A[HE]; 
                A[HE--]=R; 
              }else HX--; 
     HL=HX; 
     LH=HE+1; 
  } 
} 

void QS(int A[],int L,int H) 
{ 
int HL,LH; 
  if(L<H) 
  { 
    PS(A,A[L],L,H,HL,LH); 
    QS(A,L,HL); 
    QS(A,LH,H); 
  } 
}

PM MAIL   Вверх
DeadLine
Дата 16.2.2006, 19:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Мыслитель
**


Профиль
Группа: Завсегдатай
Сообщений: 736
Регистрация: 16.2.2006
Где: Готем

Репутация: нет
Всего: 51



Код

Uses crt;
const N=100;
type TArray=array[1..N] of Integer;
Var a:TArray;
    i : Integer;

procedure QuikSort(Var a:TArray; lb,rb:integer);
Var temp,less,gr,aa : integer;
Begin
  if rb-lb<=0 then exit;
  if rb-lb=1 then
  begin
    if a[lb] > a[rb] then
    begin
      temp:=a[rb];
      a[rb]:=a[lb];
      a[lb]:=temp;
    end;
    exit;
  end;

  aa:=a[lb];
  less:=lb;
  gr:=rb;
  while less<gr do
  begin
    if a[less+1]<=aa then
    begin
       a[less]:=a[less+1];
       less:=less+1;
    end
    else
    begin
       temp:=a[less+1];
       a[less+1]:=a[gr];
       a[gr]:=temp;
       gr:=gr-1;
    end;
  end;
  a[less] := aa;

  QuikSort(a,lb,less-1);
  QuikSort(a,less+1,rb);
end;

Begin
for i:=1 to N do a[i]:=random(100);

  QuikSort(a,1,N);

writeln;
writeln;
for i:=1 to N do write(a[i], ' ');

readkey;
end.



насколько я понял этот код то он похож на предложенный мной
PM   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Алгоритмы"

maxim1000

Форум "Алгоритмы" предназначен для обсуждения вопросов, связанных только с алгоритмами и структурами данных, без привязки к конкретному языку программирования и/или программному продукту.


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, maxim1000.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Алгоритмы | Следующая тема »


 




[ Время генерации скрипта: 0.0569 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.