Advertisement
Alex_Fomin

Untitled

Nov 27th, 2015
76
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Pascal 1.37 KB | None | 0 0
  1. const
  2.   n = 15;
  3.  
  4. type
  5.   myarray = array[1..n] of integer;
  6.  
  7. var
  8.   x: myarray;
  9.   i: byte;
  10.  
  11. procedure HeapSort(var m: myarray; N: integer);
  12. var
  13.   i: integer;
  14.  
  15.   procedure Swap(var a, b: integer);
  16.   var
  17.     tmp: integer;
  18.   begin
  19.     tmp := a;
  20.     a := b;
  21.     b := tmp;
  22.   end;
  23.  
  24.   procedure Sort(Ns: integer);
  25.   var
  26.     i, tmp, pos, mid: integer;
  27.   begin
  28.     mid := Ns div 2;
  29.     for i := mid downto 1 do
  30.     begin
  31.       pos := i;
  32.       while pos <= mid do
  33.       begin
  34.         tmp := pos * 2;
  35.         if tmp < Ns then
  36.         begin
  37.           if m[tmp + 1] < m[tmp] then
  38.             tmp := tmp + 1;
  39.           if m[pos] > m[tmp] then
  40.           begin
  41.             Swap(m[pos], m[tmp]);
  42.             pos := tmp;
  43.           end
  44.           else
  45.             pos := Ns;
  46.         end
  47.         else
  48.         if m[pos] > m[tmp] then
  49.         begin
  50.           Swap(m[pos], m[tmp]);
  51.           pos := Ns;
  52.         end
  53.         else
  54.           pos := Ns;
  55.       end;
  56.     end;
  57.   end;
  58.  
  59. begin
  60.   for i := N downto 2 do
  61.   begin
  62.     Sort(i);
  63.     Swap(m[1], m[i]);
  64.   end;
  65. end;
  66.  
  67. begin
  68.   Writeln('Исходный массив:');
  69.   for i := 1 to n do
  70.   begin
  71.     X[i] := Random(501) - 190;
  72.     Write(X[i]:5);
  73.   end;
  74.   Writeln;
  75.  
  76.   HeapSort(x, n);
  77.  
  78.   Writeln('Сортированный массив:');
  79.   for i := 1 to n do Write(X[i]:5);
  80.   Writeln;
  81. end.
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement