查找
查找算法或许没有排序算法那么重要,方法也没有那么多,但是在计算机算法中是不可或缺的。二分查找是典型代表。
二分查找
题目要求:使用二分法在一个有序数组中查找某一元素。
二分查找有以下几个特点:
第一:数组是已经排好序的序列
第二:不断以数组的中间位置为查找目标,判断其是否与要找的值相等,直到找到该值或者数组长度为0为止。
还是代码最有说服力: 1234567891011121314151617181920212223int BinarySearch(vector<int>& v,int key){ int low=0; int high=v.size()-1; int mid; //数组不存在,返回-1 if(low>high) return -1; while(low<=high) { //不断折半 mid=low+((high-low)>>1); if(v[mid]==key) return mid; else if(v[mid]>key) high=mid; else low=mid+1; } //数组中没有该值也返回-1 return -1;}