二分查找(对半搜索)

x33g5p2x  于2021-09-19 转载在 其他  
字(0.7k)|赞(0)|评价(0)|浏览(479)

二分查找(对半搜索)

  1. 本文采用Java书写选择排序,其他语言类似可以借鉴着写

所谓二分查找和对半搜索,即对于升序(或者降序)的有序序列进行查找时,由于有序我们可以直接从中间查找相等返回。大于则在右侧子序列中进行二分查找,小于则对左侧子序列进行二分查找。直至找到或者子序列只有一个元素为止。

代码实现

  • 迭代方法实现
  1. public int binSearch(int[] nums, int target) {
  2. int index, low = 0, hight=nums.length-1;
  3. while (low<=hight)
  4. {
  5. index = (low+hight) / 2;
  6. if(target<nums[index]) hight = index - 1;
  7. else if(target>nums[index]) low = index + 1;
  8. else return index;
  9. }
  10. return -1;
  11. }
  • 递归方法实现
  1. public int binSearch(int[] nums, int target) {
  2. return binSearch(nums,target,0,nums.length-1);
  3. }
  4. public int binSearch(int[] nums, int target, int low, int high){
  5. int index = -1;
  6. if(low<=high){
  7. index = (low+high)/2;
  8. if(target<nums[index])
  9. return binSearch(nums,target,low,index-1);
  10. else if(target>nums[index])
  11. return binSearch(nums,target,index+1,high);
  12. else return index;
  13. }
  14. return index;
  15. }

相关文章