(核心算法)查找某个数在有序数组中(递增,含重复)第一次出现的下标

来源:互联网 发布:淘宝哪个店铺包包好看 编辑:程序博客网 时间:2024/05/16 10:09
int search_num(int arry[], int len, int elem)
{
int low = 0, mid = 0, high = 0;
high = len -1;//最大下标
while(low <= high)
{
mid = (low + high) / 2;
if((arry[mid] == elem) && (arry[mid-1] < elem)) return mid;//与折半查找相比,加了前一个数组值的比较,确保要查找的数在数组首次出现
else if(arry[mid] <= elem) high = mid -1;//比较中多了个“=”,确保在重复数中进行前推查找
else if(arry[mid] > elem) low = mid + 1;//在大数部分和折半查找一致
}
printf("elem: %d 在数组中不存在.\n", elem);
return 0;
}
0 0
原创粉丝点击