二分查找:又称折半查找,是对有序的顺序表进行的高效查找方法。
算法思想:首先选择表中间的一个记录,比较其关键字的值,若要找的记录的关键字值大,则再取表的后半部的中间记录进行比较;否则取前半部的中间记录进行较;
如此反复,直到找到为止。仅适用于有序表;只适用顺序存储结构的表,要求表中元素基本不变,在需插入 或删除运算时,影响检索效率;
平均查找长度最小:ASL={(n+)/n }*log2(n+1)-1
时间复杂度:o(log2n)
c++ 算法实现:
int binSearch(const int *Array,int start,int end,int key) { int left,right; int mid; left=start; right=end; while (left<=right) { mid=(left+right)/2; if (key<Array[mid]) { right=mid-1; } else if(key>Array[mid]) { left=mid+1; } else return mid; } return -1; }