QuickSort
Last-modified: 2019-01-27 (日) 01:45:31 (1518d)
†
†sort-num-list [3 1 2]
reverse (sort-num-list [3 1 2]) †
to qsort :s if(:s = []) [ output []] let [:gl (partg (first :s) (butfirst :s))] let [:ll (partl (first :s) (butfirst :s))] let [:sgl (qsort :gl)] let [:sll (qsort :ll)] output (sentence :sgl (fput (first :s) :sll)) end †
†to partg :a :s if(:s = []) [ output [] ] let [:val1 :a] let [:val2 (first :s)] ifelse :val1 < :val2 [ output (fput (first :s) (partg :a (butfirst :s))) ][ output (partg :a (butfirst :s)) ] end †to partl :a :s if(:s = []) [ output [] ] let [:val1 :a] let [:val2 (first :s)] ifelse :val1 < :val2 [ output (partl :a (butfirst :s)) ][ output (fput (first :s) (partl :a (butfirst :s))) ] end †
print partg 5 [4 2 6 8] print partl 5 [4 2 6 8] print qsort [5 4 2 6 8] [8 6] [2 4] [8 6 5 4 2]
|