二分搜索:将一个排好序的数组,不断地分成两半,然后在可能包含我们所要查找的值的那一部分搜索。
- 要求数组必修是排序好的
- 假如数组有两个及两个以上的数字,那么二分算法将不能确定该返回那个值。
-
int find(int num,int a[],int len)//num将要搜索的值 a[]要查找的值 函数的返回的是找到的元素的下标{int min = 0, max = len-1;while (min<=max){int zhong = (min+max)/2;if (a[zhong]== num){return zhong;}else if (a[zhong]<num){min = zhong + 1;}else{max = zhong -1;}}return len;//没找到 返回数组的长度}
-
int find(int num, int a[], int min,int max)//num将要搜索的值 a[]要查找的值 函数的返回的是找到的元素的下标{if(min>max){return max;}int zhong = (min + max) / 2;if (a[zhong] == num){return zhong;}else if (a[zhong]<num){min = zhong + 1;find(num,a, min,max);}else{max = zhong - 1;find(num, a, min, max);}}