added inline insertion sort and binary search

This commit is contained in:
2025-12-02 19:24:46 +05:00
parent a57f05cfeb
commit 17d2d1c38d

View File

@@ -0,0 +1,31 @@
#pragma once
#include "std.h"
/// USAGE insertionSort(list.data, list.len, .id)
#define insertionSort_inline(arr, n, field) \
for(i32 i = 1, j; i < n; i++) { \
j = i; \
while( j > 0 && arr[j - 1]##field > arr[i]##field){\
arr[j] = arr[j - 1]; \
j--; \
} \
arr[j] = arr[i]; \
} \
#define binarySearch_inline(arr, n, key, field, out_index) {\
i32 low = 0; \
i32 high = n - 1; \
while (low <= high) { \
i32 mid = low + (high - low) / 2; \
if (arr[mid]##field == key) { \
out_index = mid; \
break; \
} \
/* choose left or right half */ \
if (arr[mid]##field < key) \
low = mid + 1; \
else high = mid - 1; \
} \
out_index = -1; \
}