Тема: Помогите!
Показать сообщение отдельно
  #6  
Старый 14.06.2009, 15:04
ART ART вне форума
Продвинутый
 
Регистрация: 13.02.2006
Адрес: Магнитогорск
Сообщения: 669
Репутация: 14745
По умолчанию

Не знаю в чем дело, но сортировка не трогает первый элемент:

Код:
type
  TMass = array of integer;

    procedure downHeap(var a: TMass; k, N: integer);
     var
      newElt, child: integer;
     begin
      newElt := a[k];
      while (k <= N div 2) do begin
        child := 2 * k;
        if (child < N) and (a[child] < a[child + 1]) then
         inc(child);
        if newElt >= a[child] then break;
        a[k] := a[child];
        k := child;
      end;
      a[k] := newElt;
     end;

 procedure heapSort(var a: TMass; N: integer);
 var
  i, temp: integer;
 begin
  for i := N div 2 downto 1 do
   downHeap(a, i, N);

  for i := N downto 2 do begin
   temp := a[i];
   a[i] := a[1];
   a[1] := temp;
   downHeap(a, 1, i - 1);
  end;

 end;
Ответить с цитированием