quicksort example, I64.parse, IO.write_file
This commit is contained in:
46
examples/quicksort.zr
Normal file
46
examples/quicksort.zr
Normal file
@@ -0,0 +1,46 @@
|
||||
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))
|
||||
Reference in New Issue
Block a user