func quicksort[arr: Array] : I64 do_quicksort(arr, 0, Array.size(arr)-1) 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) 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 = Array.new() Array.push(arr, 340) Array.push(arr, 252) Array.push(arr, 352) Array.push(arr, 117) Array.push(arr, 650) Array.push(arr, 652) Array.push(arr, 322) Array.push(arr, 175) Array.push(arr, 714) Array.push(arr, 268) Array.push(arr, 725) Array.push(arr, 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))