Модератор: Модераторы

Seenkao писал(а):Мне надо прыгнуть с кода на код, для проверки работоспособности программы.
 
   
   
 
alexs писал(а):Модераторы - уберите тему во флуд.
я бы до такого не додумался...iskander писал(а):Имхо бывают вещи и похуже, например вот это.
Что по мнению знатоков не так с этой сортировкой и можно ли это исправить? Варианты ответа:
ну да, ну да... может голову включим? Или вы каждый раз при проверке пользуетесь другим языком, а потом этот код ещё и на паскаль переделываете? (конечный результат программы должен быть от тестового кода). Или вы не тестируете свой код?sign писал(а):За плечами и Фортран, и ПЛ-1, и бейсик с ихними goto
Seenkao писал(а):я бы до такого не додумался.
Seenkao писал(а):iskander, не уверен вообще, что быстрее. А если пузырёк немного оптимизировать, то уж точно не быстрее.
... хотя ... опять от умельца зависит. )))
var
  massive: array[0..100] of integer;    // можно не определённый массив
procedure Sort;
var
  i, n: integer;
begin
  i := length(massive);
  dec(i);
  while i > 0 do
  begin
    if massiv[i] > massiv[i + 1] then
    begin
      n := massive[i];
      massive[i] := massive[i + 1];
      massive[i + 1] := n;
    end;
    dec(i);
  end;
end;
Seenkao писал(а):P.S. какой ерундой я страдаю...
iskander писал(а):runewalsh прошу не беспокоиться
class procedure classname.QSort(p: pElem; count, reasonable: SizeUint
   {$ifdef allow_mt}; parallel: pParallelQSort {$endif} {$ifdef param}; const param: ParamType {$endif});
var
   L, R: SizeUint;
   t, avg: SwapTemp;
begin
   repeat
      if count <= SelectionThreshold then
      begin
         SelectionSort(p, count {$ifdef param}, param {$endif});
         exit;
      end;
      if reasonable = 0 then
      begin
         HeapSort(p, count {$ifdef param}, param {$endif});
         exit;
      end;
      reasonable := reasonable div 2 + reasonable div 4;
      avg := SwapTemp(Median(p, count {$ifdef param}, param {$endif})^);
      R := 0;
      L := count - 1;
      repeat
         while {$define _1 := p[R]} {<} {$define _2 := Elem(avg)} less_ do inc(R);
         while {$define _1 := Elem(avg)} {<} {$define _2 := p[L]} less_ do dec(L);
         if R <= L then
         begin
            t := SwapTemp(p[R]); SwapTemp(p[R]) := SwapTemp(p[L]); SwapTemp(p[L]) := t;
            inc(R);
            dec(L);
         end;
      until R > L;
      // [0 .. L], [R .. count - 1]
      if count - R <= L then
      begin
         if R + 1 < count then
         {$ifdef allow_mt} ParallelQSort.MaybeSpawn {$else} QSort {$endif}
            (p + R, count - R, reasonable {$ifdef allow_mt}, parallel {$endif} {$ifdef param}, param {$endif});
         count := L + 1;
      end else
      begin
         if L > 0 then
         {$ifdef allow_mt} ParallelQSort.MaybeSpawn {$else} QSort {$endif}
            (p, L + 1, reasonable {$ifdef allow_mt}, parallel {$endif} {$ifdef param}, param {$endif});
         p += R;
         count -= R;
      end;
   until false;
end;

runewalsh писал(а):Почему?

iskander писал(а):Вместо сортировки выбором чаще применяют сортировку вставкой

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 1