【C语言】在整型有序数组中查找想要的数字(折半查找/二分查找)
2019-02-12 12:38
197 查看
程序要求:
写代码可以在整型有序数组中查找想要的数字,找到了返回下标,找不到返回-1.(折半查找)
解题思路:
折半查找(二分查找): 前提是数组有序。
假设有一个升序数组arr【10】,要查找的数是to_find,其基本思想是:
1)设查找数据的范围下限为left = 0,上限为right = 10 - 1,中点mid = (left + right) / 2,用to_find与中点元素arr【mid】比较。
2)若to_find等于arr【mid】,即找到,停止查找;
3)若to_find > arr【mid】,替换下限left = mid + 1,到右半段继续查找;
4)若to_find < arr【mid】,替换上限right = mid - 1,到左半段继续查找;
如此重复前面的过程直到找到或者left > right为止。如果left>right,说明没有此数,打印找不到to_find,程序结束。
具体代码:
[code]#include<stdio.h> #include<stdlib.h> int main(){ int arr[10] = { 0, 11, 22, 33, 44, 55, 66, 77, 88, 99 }; //定义一个升序的数组。 int left = 0; int right = 10 - 1; int to_find = 0; int mid; printf("请输入要找的数X!\n"); scanf_s("%d", &to_find); while (left <= right){ mid = (left + right) / 2; if (to_find > arr[mid]){ left = mid + 1; } else if (to_find < arr[mid]){ right = mid - 1; } else{ break; } } if (left <= right){ printf("找到了 %d !它对应的数组下标是 %d!\n",to_find,mid); } else{ printf("没找到 %d !\n",to_find); } system("pause"); return 0; }
运行结果:
相关文章推荐
- .写代码可以在整型有序数组中查找想要的数字,找到了返回下标,找不到返回-1.(折半查找)C语言
- (C语言)在整型有序数组中查找想要的数字, 找到了返回下标,找不到返回-1.(折半查找)
- C语言在整型有序数组中查找想要的数字。(折半查找法)
- 折半查找—写代码实现在整型有序数组中查找想要的数字,找到了返回下标,找不到返回-1.
- 【C语言基础】写代码可以在整型有序数组中查找想要的数字(while循环,if条件语句)
- 写代码可以在整型有序数组中查找想要的数字, 找到了返回下标,找不到返回-1.(折半查找)
- 写代码可以在整型有序数组中查找想要的数字, 找到了返回下标,找不到返回 - 1.(折半查找)
- 写代码可以在整型有序数组中查找想要的数字,找到了返回下标,找不到返回-1.(折半查找)
- 可以在整型有序数组中查找想要的数字,找到了返回下标,找不到返回-1.(折半查找)
- 用折半查找法在整型有序数组中查找想要的数字,找到了返回下标,找不到返回-1.
- 写代码可以在整型有序数组中查找想要的数字,找到了返回下标,找不到返回-1.(折半查找)
- 写代码可以在整型有序数组中查找想要的数字,找到了返回下标,找不到返回-1.(折半查找)
- 写代码可以在整型有序数组中查找想要的数字,找到了返回下标,找不到返回 - 1.(折半查找)
- 写代码可以在整型有序数组中查找想要的数字, 找到了返回下标,找不到返回-1.(折半查找)
- 在整型有序数组中查找想要的数字,找到了返回下标,找不到返回-1.(折半查找)
- 在整型有序数组中查找想要的数字, 找到了返回下标,找不到返回-1.(折半查找)
- 【C练】写代码可以在整型有序数组中查找想要的数字, 找到了返回下标,找不到返回-1.(折半查找)
- 写代码可以在整型有序数组中查找想要的数字,找到了返回下标,找不到返回-1.(折半查找)
- 函数在整型有序数组中查找想要的数字(折半查找)
- 写代码可以在整型有序数组中查找想要的数字,找到了返回下标,找不到返回-1.(折半查找)