aboutsummaryrefslogtreecommitdiff
path: root/examples/working/qsort.ey
blob: 35074446ee65226ac5c3f1267d8c20ab4c7aa089 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
[ 23 3 43 37 89 11 21 4 35 94 28 36 96 95 51 7 59 57 48 68 85 73 6 67 71 92 76 14 31 18 64 30 9 41 34 86 33 75 70 81 27 93 8 100 55 39 1 61 42 45 29 5 17 79 13 90 49 99 91 69 46 54 16 53 40 62 60 20 88 97 12 74 15 65 72 80 50 44 47 24 25 2 58 52 78 83 10 84 98 19 56 87 26 32 22 63 82 77 0 38 66 ] /data defv

{ "=[]" | -31*21*310*210* } /swap deff

{ /a defv /end defv /start defv
  end a * /pivot defv
  start /store defv

  start end range { /i defv
    i a * pivot lt {
      store _ i a swap
              1 add =store
    } rep
  } each

  store _ end a swap
        _ 1 sub start -0101 lt { a qsort } { -2 } ? *
          1 add end   -1010 lt { a qsort } { -2 } ? *
} /qsort deff

{ _ len _ 0 gt { 1 sub 0 -012 qsort } rep } /sort deff

data _ sort dump