Advertisement
green1ant

shakersort

Dec 10th, 2018
236
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Delphi 1.33 KB | None | 0 0
  1. program shaker;
  2.  
  3. {$APPTYPE CONSOLE}
  4.  
  5. uses
  6.   System.SysUtils;
  7.  
  8. type
  9.    TArray = array [1..16] of Integer;
  10.  
  11. procedure Print(Arr: TArray);
  12. var
  13.    i: Integer;
  14. begin
  15.    for i := 1 to 16 do
  16.       Write(Arr[i], ' ');
  17.  
  18.    Writeln;
  19. end;
  20.  
  21. var
  22.    i, low, high, current, tmp: Integer;
  23.    //s, e, tmp, k, i: Integer;
  24.    Arr: TArray = (0,1,2,3,4,5,7,5,9,7,9,1,4,5,8,7);
  25.    N: Integer = 16;
  26. begin
  27.    low := 1;
  28.    high := N;
  29.  
  30.    Writeln('Non-sorted array:');
  31.    Print(Arr);
  32.    Writeln('--------------------');
  33.    while low < high do
  34.    begin
  35.  
  36.       //пузырьком перемещаем максимальный элемент вправо
  37.       for i := low to high - 1 do
  38.          if Arr[i] > Arr[i + 1] then
  39.          begin
  40.             tmp := Arr[i];
  41.             Arr[i] := Arr[i + 1];
  42.             Arr[i + 1] := tmp;
  43.             current := i;
  44.          end;
  45.       high := current;
  46.       Print(Arr);
  47.  
  48.       //пузырьком перемещаем минимальный влево
  49.       for i:= high downto low + 1 do
  50.          if Arr[i] < Arr[i - 1] then
  51.          begin
  52.             tmp := Arr[i];
  53.             Arr[i] := Arr[i - 1];
  54.             Arr[i - 1] := tmp;
  55.             current := i;
  56.          end;
  57.       low := current;
  58.  
  59.  
  60.       Print(Arr);
  61.       Writeln('--------------------');
  62.    end;
  63.  
  64.    Readln;
  65. end.
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement