二分思想
将区间的中间数据与目标进行比较,要求查找的序列是有序的
如果目标大于中值就舍弃较小的一半序列
如果目标小于中值就舍弃较大的一半序列
#includeusing namespace std; //返回索引 int binary_search(int arr[],int l,int r,int value) { int mid = (l + r) / 2; if (arr[mid] == value)return mid; //注意定界,否则就会越界 if (arr[mid] < value && mid + 1 <= r) return binary_search(arr, mid + 1, r, value); else if (arr[mid] > value && mid - 1 >= l)return binary_search(arr, l, mid - 1, value); return -1; } int main() { int arr[] = { 1,2,3,4,5,6,7,8,9 }; cout << binary_search(arr,0,8,10); cout << binary_search(arr,0,8,-1); cout << binary_search(arr,0,8,4); return 0; //结果-1 -1 3 }
本来想写哈希表的,但是想了想,这东西考了也写不完。还是算了吧
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)