home *** CD-ROM | disk | FTP | other *** search
/ Language/OS - Multiplatform Resource Library / LANGUAGE OS.iso / oper_sys / oasis / ossxmpls.lha / examples / quick.d < prev    next >
Encoding:
Text File  |  1992-03-25  |  1.6 KB  |  52 lines

  1. class quick {
  2. attribute:
  3.     private     int[50]   list = $[50];
  4.                 int[50]   ilist = $[50]{27,74,17,33,94,18,46,83,65, 2,
  5.                                         32,53,28,85,99,47,28,82, 6,11,
  6.                                         55,29,39,81,90,37,10, 0,66,51,
  7.                                          7,21,85,27,31,63,75, 4,95,99,
  8.                                         11,28,61,74,18,92,40,53,59, 8};
  9.                 int       i,j,v;
  10. method:
  11.     public      main      ().
  12.     private     loop      (int J).
  13.                 init      (int I).
  14.                 sort      (int L,R).
  15.                 while     (int I,J).
  16.                 repeat    (int I).
  17.                 more      (int J).
  18.                 swap      (int X,Y,?Y1,?X1).
  19. }
  20.  
  21. quick {
  22.     main() |- loop(10000).
  23.  
  24.     loop(0).
  25.     loop(J') |- init(49); sort(0,49); loop(J-1).
  26.  
  27.     init(0)  |- (int) list[0]' = ilist[0].
  28.     init(I') |- (int) list[I]' = ilist[I]; init(I-1).
  29.  
  30.     sort(L',R') :- L>=R.
  31.     sort(L',R') :- (int) v' = list[L];
  32.                    while(L,R+1).
  33.     sort(L',R') |- (int) J' = j;
  34.                    (int) T' = list[i];
  35.                    (int) list[i]' = list[J];
  36.                    (int) list[J]' = list[L];
  37.                    (int) list[L]' = T;
  38.                    sort(L,J-1);
  39.                    sort(J+1,R).
  40.  
  41.     while(I',J') :-repeat(I);
  42.                    more(J);
  43.                    swap(list[i],list[j],list[i]',list[j]');
  44.                    j>i |- while(i,j).
  45.  
  46.     repeat(I')  :- list[I+1]<v |- repeat(I+1).
  47.     repeat(I')  |- (int) i' = I+1.
  48.     more(J')    :- list[J-1]>v |- more(J-1).
  49.     more(J')    |- (int) j' = J-1.
  50.     swap(X',Y',Y,X).
  51. }
  52.