算法的优化就在于提高它的效率即缩短运行时间,这就涉及到了时间复杂度的问题。对于一般的顺序查找法,用二分查找法快得多,特别是在查找的范围大时,二分查找法的优势就更明显了,举个例子,像在100万个数中查找,用普通的顺序查找法那是相当恐怖的,运气差点就得找100万个数,而如果用二分查找法最多就20次,因为2的20次方就是100万左右。所以用好方法可以让你的代码简洁高效。
O(1)< O(logn)< O(n)< O(n^2)
下面是代码实现二分查找法
#include <iostream> using namespace std; int HalfCheck(int *a, const int x, const int n); int main() { int a[]={1,2,3,4,5,6,7,8,9,10}; int m=5; int result; result = HalfCheck(a,m,10); if(result <0) cout << "没找到"<<endl; else cout << "在a["<< result<< "]找到"<<endl; return 0; } int HalfCheck(int *a, const int x,const int n) { int low,high,mid; low = 0;high = n-1; while(low <= high) { mid = (low+high)/2; if(a[mid] == x) return mid; else if(a[mid] < x) low = mid+1; else if(a[mid] > x) high =mid-1; } return -1; }