查找算法-Search,二分查找
查找过程:
将待查关键字与有序表中间位置的记录进行比较,若相等,查找成功,若小于,则只可能在有序表的前半部分,若大于则只可能在有序表的后半部分,因此,经过一次比较,就将查找范围缩小一半,这样一直进行下去直到找到所需记录或记录不在查找表中。
二分查找特点
代码
int Search_Binary(int* a, int key);int main(void){int a[SIZE] = { 2,3,4,5,6,78,99,100 };int i = Search_Binary(a, 100);printf("该元素数组下标为:%d", i);return 0;}int Search_Binary(int* a,int key){int low = 0; //记录首位为最低下标int high = SIZE - 1; //记录末尾为最高下标while (low <= high){int mid = (low + high);//二分,记录中间坐标if (key < a[mid]) //若查找值比中值小high = mid-1; //最高下标调整为中间坐标的前一位else if (key > a[mid]) //若查找值比中值大low = mid+1; //最低下标调整为中间坐标的后一位else if(key==a[mid]) //查找成功 返回下标值return mid;}return 0; //循环结束后程序仍没有结束,则返回0表明查找失败}
