binary search of an integer array
二分法查找
1: // binary search of an integer array, this search is efficient for large arrays
2: // tested with PellesC vegaseat 24jan2005
3:
4: #include <stdio.h>
5:
6: int main()
7: {
8: int a[20] = {0};
9: int n, i, j, temp;
10: int *beg, *end, *mid, target;
11:
12: printf(" enter the total integers you want to enter (make it less then 20):\n");
13: scanf("%d", &n);
14: if (n >= 20) return 0; // ouch!
15: printf(" enter the integer array elements:\n" );
16: for(i = 0; i < n; i++)
17: {
18: scanf("%d", &a[i]);
19: }
20:
21: // sort the loaded array, a must for binary search!
22: // you can apply qsort or other algorithms here
23: for(i = 0; i < n-1; i++)
24: {
25: for(j = 0; j < n-i-1; j++)
26: {
27: if (a[j+1] < a[j])
28: {
29: temp = a[j];
30: a[j] = a[j+1];
31: a[j+1] = temp;
32: }
33: }
34: }
35: printf(" the sorted numbers are:");
36: for(i = 0; i < n; i++)
37: {
38: printf("%d ", a[i]);
39: }
40:
41: // point to beginning and end of the array
42: beg = &a[0];
43: end = &a[n]; // use n = one element past the loaded array!
44: printf("\n beg points to address %d and end to %d",beg, end); // test
45:
46: // mid should point somewhere in the middle of these addresses
47: mid = beg += n/2;
48: printf("\n mid points to address %d", mid); // test
49:
50: printf("\n enter the number to be searched:");
51: scanf("%d",&target);
52:
53: // binary search, there is an AND in the middle of while()!!!
54: while((beg <= end) && (*mid != target))
55: {
56: // is the target in lower or upper half?
57: if (target < *mid)
58: {
59: end = mid - 1; // new end
60: n = n/2;
61: mid = beg += n/2; // new middle
62: }
63: else
64: {
65: beg = mid + 1; // new beginning
66: n = n/2;
67: mid = beg += n/2; // new middle
68: }
69: }
70:
71: // did you find the target?
72: if (*mid == target)
73: {
74: printf("\n %d found!", target);
75: }
76: else
77: {
78: printf("\n %d not found!", target);
79: }
80:
81: getchar(); // trap enter
82: getchar(); // wait
83: return 0;
84: }
85:
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 地球OL攻略 —— 某应届生求职总结
· 提示词工程——AI应用必不可少的技术
· Open-Sora 2.0 重磅开源!
· 字符编码:从基础到乱码解决