summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBretasArthur1 <arthur.bretas@sou.inteli.edu.br>2026-01-11 21:02:03 -0300
committerBretasArthur1 <arthur.bretas@sou.inteli.edu.br>2026-01-11 21:06:22 -0300
commitd93e003654395133fce9e2bcc7bed959ac033fbc (patch)
treea1f49526a2bdcdc202b9e411f35d67b7b9a22358
parentea9534610663a1a52fe248a08eeefa4bf8e5591e (diff)
feat: add binary search example
-rw-r--r--examples/algorithms/binsearch.zc47
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}";
+}