半分法查找
1 #include <stdio.h> 2 #include <stdlib.h> 3 int *binsearch(int *base, int len, int data); 4 5 int main() 6 { 7 int * p = NULL; 8 int a[4] = {1, 2, 45, 68};//排好序的数组 9 int data = 43; 10 p = binsearch(a, 4, data); 11 printf("%p\n", p); 12 system("pause"); 13 return 0; 14 } 15 16 int *binsearch(int *base, int len, int data) 17 { 18 int *low = base, *high = base + len; 19 int *mid = NULL; 20 21 while(low < high) 22 { 23 mid = low + ((high - low) >> 1); 24 if(data < *mid) 25 { 26 high = mid; 27 } 28 else if(data > *mid) 29 { 30 low = mid + 1;//mid + 1 不是 mid 31 } 32 else 33 { 34 return mid; 35 } 36 } 37 38 return NULL; 39 }
【推荐】还在用 ECharts 开发大屏?试试这款永久免费的开源 BI 工具!
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步