[有序数组]二分查找(C语言实现)
本文章仅供提交作业与课内交流使用,并无参考借鉴价值
//Author DICTATOR
//这是对有序数组进行二分查找的代码
#include<stdlib.h>
#include<stdio.h>
int BinarySearch(int arr[],int a,int length){
int left = 0;
int right = length - 1;
while (left <= right){
int mid = (left + right) / 2; //直接二分
if (a < arr[mid]){ //舍去不符合条件的一半
right = mid - 1;
} else if(a > arr[mid]){
left = mid + 1;
} else { //若恰好等于,则直接输出mid
return mid;
}
}
return -1; //如果未检索到,则输出-1
}
int main(){
int arr[5]={1,2,3,5,6};
printf("%d",BinarySearch(arr,5,5) + 1);
return 0;
}
对有序数组进行二分查找较为简单,也容易理解。若要类比实际场景,就是我们经常玩的“猜数字”游戏,直接对半取是最高效的办法。
二分查找配合前面的排序使用,能完成初步的检索。