Janilabo

Janilabo | TSAJnlbSortDnmc() [Simba]

May 21st, 2013
57
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Pascal 1.74 KB | None | 0 0
  1. procedure TSAJnlbSortDnmc(var TSA: TStringArray; order: (so_LowToHigh, so_HighToLow));
  2. var
  3.   a, b, x, i, l, s: Integer;
  4.   tmp: string;
  5. begin
  6.   l := Length(TSA);
  7.   if (l > 1) then
  8.   begin
  9.     s := ((l - 1) div 2);
  10.     case order of
  11.       so_LowToHigh:
  12.       for i := 0 to s do
  13.       begin
  14.         a := i;
  15.         b := ((l - 1) - i);
  16.         if (TSA[b] < TSA[a]) then
  17.         begin
  18.           tmp := TSA[b];
  19.           TSA[b] := TSA[a];
  20.           TSA[a] := tmp;
  21.         end;
  22.         for x := (a + 1) to (b - 1) do
  23.           if (TSA[x] < TSA[a]) then
  24.           begin
  25.             tmp := TSA[x];
  26.             TSA[x] := TSA[a];
  27.             TSA[a] := tmp;
  28.           end else
  29.             if (TSA[x] > TSA[b]) then
  30.             begin
  31.               tmp := TSA[x];
  32.               TSA[x] := TSA[b];
  33.               TSA[b] := tmp;
  34.             end;
  35.       end;
  36.       so_HighToLow:
  37.       for i := 0 to s do
  38.       begin
  39.         a := i;
  40.         b := ((l - 1) - i);
  41.         if (TSA[a] < TSA[b]) then
  42.         begin
  43.           tmp := TSA[a];
  44.           TSA[a] := TSA[b];
  45.           TSA[b] := tmp;
  46.         end;
  47.         for x := (a + 1) to (b - 1) do
  48.           if (TSA[x] > TSA[a]) then
  49.           begin
  50.             tmp := TSA[x];
  51.             TSA[x] := TSA[a];
  52.             TSA[a] := tmp;
  53.           end else
  54.             if (TSA[x] < TSA[b]) then
  55.             begin
  56.               tmp := TSA[x];
  57.               TSA[x] := TSA[b];
  58.               TSA[b] := tmp;
  59.             end;
  60.       end;
  61.     end;
  62.   end;
  63. end;
  64.  
  65. var
  66.   TSA: TStringArray;
  67.  
  68. begin
  69.   TSA := ['Apple', 'Orange', 'Lemon', 'Banana', 'Pear'];
  70.   TSAJnlbSortDnmc(TSA, so_HighToLow); // Reversed.
  71.   WriteLn(ToStr(TSA));
  72.   TSAJnlbSortDnmc(TSA, so_LowToHigh); // Default.
  73.   WriteLn(ToStr(TSA));
  74. end.
Advertisement
Add Comment
Please, Sign In to add comment