diff options
| author | Zuhaitz Méndez Fernández de Aránguiz <zuhaitz@debian> | 2026-01-11 21:13:29 +0000 |
|---|---|---|
| committer | Zuhaitz Méndez Fernández de Aránguiz <zuhaitz@debian> | 2026-01-11 21:13:50 +0000 |
| commit | 36938b584ea2d096d97a124b70da51f685850ff7 (patch) | |
| tree | 768c132d8a661c74f36683005548cf6afb163714 /examples/algorithms | |
| parent | ff32e7b6b99dd9b17b4c581e6c48308128f46c52 (diff) | |
A few examples, some more will be added soon.
Diffstat (limited to 'examples/algorithms')
| -rw-r--r-- | examples/algorithms/quicksort.zc | 57 |
1 files changed, 57 insertions, 0 deletions
diff --git a/examples/algorithms/quicksort.zc b/examples/algorithms/quicksort.zc new file mode 100644 index 0000000..adef038 --- /dev/null +++ b/examples/algorithms/quicksort.zc @@ -0,0 +1,57 @@ + +import "std.zc" + +fn swap(arr: int*, i: isize, j: isize) { + var temp = arr[i]; + arr[i] = arr[j]; + arr[j] = temp; +} + +fn partition(arr: int*, low: isize, high: isize) -> isize { + var pivot = arr[high]; + var i = low - 1; + + for j in low..high { + if arr[j] < pivot { + i++; + swap(arr, i, j); + } + } + swap(arr, i + 1, high); + return i + 1; +} + +fn quicksort(arr: int*, low: isize, high: isize) { + if low < high { + var pi = partition(arr, low, high); + quicksort(arr, low, pi - 1); + quicksort(arr, pi + 1, high); + } +} + +fn print_array(arr: int*, size: isize) { + "["..; + for i in 0..size { + "{arr[i]}"..; + if i < size - 1 { ", "..; } + } + "]"; +} + +fn main() { + var v = Vec<int>::new(); + defer v.free(); + + var values = [10, 7, 8, 9, 1, 5, 3, 12, 2, 6]; + for i in 0..10 { + v.push(values[i]); + } + + "Original: "..; + print_array(v.data, (int)v.len); + + quicksort(v.data, 0, (isize)v.len - 1); + + "Sorted: "..; + print_array(v.data, (int)v.len); +} |
