diff options
| author | Zuhaitz <zuhaitz.zechhub@gmail.com> | 2026-01-12 10:57:31 +0000 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2026-01-12 10:57:31 +0000 |
| commit | 96faad9e45f799fe5a595ce28cb0718fdb9ad6ca (patch) | |
| tree | 17703000e2c87a7d592a247888417770cd899e59 | |
| parent | 611dd705191a773d23dcab8a03e036e58295c186 (diff) | |
| parent | d93e003654395133fce9e2bcc7bed959ac033fbc (diff) | |
Merge pull request #1 from BretasArthur1/main
feat: add binary search example
| -rw-r--r-- | examples/algorithms/binsearch.zc | 47 |
1 files changed, 47 insertions, 0 deletions
diff --git a/examples/algorithms/binsearch.zc b/examples/algorithms/binsearch.zc new file mode 100644 index 0000000..db1a354 --- /dev/null +++ b/examples/algorithms/binsearch.zc @@ -0,0 +1,47 @@ +import "std.zc" + +fn binary_search(arr: int*, size: isize, target: int) -> isize { + var low: isize = 0; + var high: isize = size - 1; + + while low <= high { + var mid = low + (high - low) / 2; + + if arr[mid] == target { + return mid; + } else if arr[mid] < target { + low = mid + 1; + } else { + high = mid - 1; + } + } + + return -1; +} + +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 = [1, 2, 3, 5, 6, 7, 8, 9, 10, 12]; + for i in 0..10 { + v.push(values[i]); + } + + "Array: "..; + print_array(v.data, (int)v.len); + + var target = 7; + var result = binary_search(v.data, (isize)v.len, target); + + "Found {target} at index {result}"; +} |
