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 ;}
(核心算法)查找某个数在有序数组中(递增,含重复)第一次出现的下标
最新推荐文章于 2022-07-29 19:33:29 发布