程序要求:
写代码可以在整型有序数组中查找想要的数字,找到了返回下标,找不到返回-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,程序结束。
具体代码:
#include<stdio.h>
#include<stdlib.h>
int main(){
int arr[10] = { 0, 11, 22, 33, 4