func quicksort[arr: Array] : I64 do_quicksort(arr, 0, Array.size(arr)-1) return 0 func do_quicksort[arr: Array, low: I64, high: I64] : I64 if low < high let i: I64 = partition(arr, low, high) do_quicksort(arr, low, i - 1) do_quicksort(arr, i + 1, high) return 0 func partition[arr: Array, low: I64, high: I64] : I64 let pivot: I64 = Array.nth(arr, high) let i: I64 = low - 1 for j in low:high if Array.nth(arr, j) <= pivot i = i + 1 let temp: I64 = Array.nth(arr, i) Array.set(arr, i, Array.nth(arr, j)) Array.set(arr, j, temp) let temp: I64 = Array.nth(arr, i + 1) Array.set(arr, i + 1, Array.nth(arr, high)) Array.set(arr, high, temp) return i + 1 func main[] : I64 let arr: Array = [340, 252, 352, 117, 650, 652, 322, 175, 714, 268, 725, 664] for i in 0:Array.size(arr) print_i64(Array.nth(arr, i)) print("------------") quicksort(arr) for i in 0:Array.size(arr) print_i64(Array.nth(arr, i))