home *** CD-ROM | disk | FTP | other *** search
/ Programmer 7500 / MAX_PROGRAMMERS.iso / PASCAL / TURBO5.ZIP / QUIKSORT.PAS < prev    next >
Encoding:
Pascal/Delphi Source File  |  1986-12-26  |  1.1 KB  |  42 lines

  1. {Quicksort in Turbo Pascal}
  2. {$A-}
  3. var a: array[1..100] of char;
  4.  
  5. procedure sort(bottom,top: integer);
  6.   var lower_ptr, upper_ptr: integer;
  7.       middle_element, temp: char;
  8.    begin lower_ptr := bottom;
  9.       upper_ptr :=top;
  10.       middle_element := a[(bottom+top) div 2];
  11.       repeat
  12.          while a[lower_ptr] < middle_element do lower_ptr := lower_ptr + 1;
  13.          while middle_element < a[upper_ptr] do upper_ptr := upper_ptr - 1;
  14.        if lower_ptr <= upper_ptr then
  15.          begin
  16.             temp := a[lower_ptr];
  17.             a[lower_ptr] := a[upper_ptr];
  18.             a[upper_ptr] := temp;
  19.             lower_ptr := lower_ptr + 1;
  20.             upper_ptr := upper_ptr - 1;
  21.          end;
  22.       until lower_ptr > upper_ptr;
  23.       if bottom < upper_ptr then sort(bottom,upper_ptr);
  24.       if lower_ptr < top then sort(lower_ptr,top);
  25.    end;
  26.  
  27. var i,j: integer;
  28. begin
  29.    i := 0;
  30.    repeat
  31.       i := i + 1;
  32.       read(kbd,a[i]);
  33.       writeln(a[i]);
  34.    until a[i] = 'Z';
  35.    sort(1,i);
  36.    writeln;
  37.    j := 0;
  38.    repeat
  39.       j := J + 1;
  40.       writeln(a[j]);
  41.    until j = i
  42. end.