home *** CD-ROM | disk | FTP | other *** search
- {Quicksort in Turbo Pascal}
- {$A-}
- var a: array[1..100] of char;
-
- procedure sort(bottom,top: integer);
- var lower_ptr, upper_ptr: integer;
- middle_element, temp: char;
- begin lower_ptr := bottom;
- upper_ptr :=top;
- middle_element := a[(bottom+top) div 2];
- repeat
- while a[lower_ptr] < middle_element do lower_ptr := lower_ptr + 1;
- while middle_element < a[upper_ptr] do upper_ptr := upper_ptr - 1;
- if lower_ptr <= upper_ptr then
- begin
- temp := a[lower_ptr];
- a[lower_ptr] := a[upper_ptr];
- a[upper_ptr] := temp;
- lower_ptr := lower_ptr + 1;
- upper_ptr := upper_ptr - 1;
- end;
- until lower_ptr > upper_ptr;
- if bottom < upper_ptr then sort(bottom,upper_ptr);
- if lower_ptr < top then sort(lower_ptr,top);
- end;
-
- var i,j: integer;
- begin
- i := 0;
- repeat
- i := i + 1;
- read(kbd,a[i]);
- writeln(a[i]);
- until a[i] = 'Z';
- sort(1,i);
- writeln;
- j := 0;
- repeat
- j := J + 1;
- writeln(a[j]);
- until j = i
- end.