]> git.llucax.com Git - z.facultad/75.40/1er-cuat/orden.git/blob - test/qsort.pas
759aaf3192e82ac15798483b4d442d0df2ca55e4
[z.facultad/75.40/1er-cuat/orden.git] / test / qsort.pas
1 program qsort;\r
2 \r
3 uses crt,dos;\r
4 \r
5 const\r
6      max = 1000;\r
7 \r
8 type\r
9     list = array[1..max] of integer;\r
10 \r
11 var\r
12    data : list;\r
13    i : integer;\r
14    h,m,s,hun : word;\r
15 \r
16  procedure quicksort(var a : list; Lo,Hi: integer);\r
17 \r
18     procedure sort(l,r : integer);\r
19 \r
20        var\r
21           i,j,x,y : integer;\r
22 \r
23        begin\r
24             i := l; j := r; x := a[( l+r ) div 2];\r
25             repeat\r
26                   while a[i] < x do i := i+1;\r
27                   while x < a[j] do j := j-1;\r
28                   if i < j then\r
29                      begin\r
30                           y := a[i]; a[i] := a[j]; a[j] := y;\r
31                           i := i+1; j := j-1;\r
32                      end;\r
33             until i > j;\r
34             if l < j then sort( l , j );\r
35             if i < r then sort( i , r );\r
36        end;\r
37 \r
38     begin {quicksort};\r
39          sort( Lo , Hi );\r
40     end;\r
41 \r
42 \r
43 \r
44 begin {qsort};\r
45      write('Now generating 1000 random numbers...');\r
46      randomize;\r
47      for i := 1 to max do data[i] := random(30000);\r
48      writeln;\r
49      writeln('Now sorting random numbers...');\r
50      gettime(h,m,s,hun);\r
51      writeln('Start time is : ',h,' : ',m,' : ',s,' : ',hun);\r
52      quicksort( data, 1, max );\r
53      writeln;\r
54      {for i := 1 to max do write(data[i] ); }\r
55      gettime(h,m,s,hun);\r
56      writeln('Finish time is : ',h,' : ',m,' : ',s,' : ',hun);\r
57 end.