#!/usr/bin/env mwnci function QuickSort(arr) { tmp={} n=0 while (n < len(arr)) { tmp = set(tmp, type(arr[n]), true) n++ } if (len(keys(tmp)) > 1) { println("`sort`: Can't sort with mixed-type values") println(string(arr)) exit(1) } tmp={} newArray = arr return qsort(newArray, 0, len(arr)-1); } function qsort(arr, start, end) { if ((end - start) < 1) { return arr; } pivot=arr[end] splitIndex=start i=start while (i < end) { if (arr[i] < pivot) { arr=swap(arr, splitIndex, i) splitIndex++ } i++ } arr=set(arr, end, arr[splitIndex]) arr=set(arr, splitIndex, pivot) arr=qsort(arr, start, splitIndex-1) arr=qsort(arr, splitIndex+1, end) return arr; } a=[] foreach n in 1..100 { a=push(a, random(10)) } a=QuickSort(a) println(a)