折半查找法Java,编程实现折半查找算法

  折半查找法Java,编程实现折半查找算法

  这篇文章给你带来了一些关于java的知识。半搜索法也称为子搜索法。顾名思义,就是把数据分成两半,然后确定你要找的是哪一半的密钥。重复以上步骤,直到找到目标键。下面就一起来看看吧,希望对你有帮助。

  如何解决写爬虫IP受阻的问题?立即使用。

  

二分查找

  二分搜索法又称二分搜索法,是一种高效的搜索方法,可以在数据量级的对数时间复杂度内完成搜索。这是一种在有序数组中查找特定元素的搜索算法。

  

算法思路

  以升序序列为例,比较目标元素与序列中间元素的大小,如果目标元素大于中间元素,则继续序列后半部分的二分搜索法;如果目标元素小于中间位置的元素,则在序列的前半部分进行比较;如果它们相等,则找到元素的位置。每个比较序列的长度将是前一个序列的一半,直到找到相等元素的位置或最终没有找到目标元素。

  

图解

  给定一个有序数组nums=[-1,0,2,5,8,12,18,38,43,46]

  然后在这个数组中找到目标值target=12。

  如下图所示:

  

力扣原题

  门户

  标题描述:

  给定一个整数数组nums,有n个有序元素和一个目标值target,写一个函数在nums中搜索目标,如果目标值有返回下标,返回-1,否则返回。

  示例1:

  示例2:

  思考解决问题:

  根据问题的意思,数组是有序数组,这也是二分搜索法的先决条件。

  定义两个指针,分别指向数组的第一个和第二个元素;中期;找到数组的dle值mid如果nums[mid] target在数组的后半部分,否则nums[mid] target在前半部分;重复前面的操作,直到nums[mid]=target,表示找到目标,返回下标。Java代码实现:

  类别解决方案{

  public int search(int[] nums,int target) {

  int left=0,right=nums . length-1;

  While(left=right) {//循环条件

  int mid=left(右-左)/2;

  if(nums[mid]==target){

  返回mid

  } else if (nums[mid] target) {

  左=中1;

  }否则{

  右=中1;

  }

  }

  return-1;//如果找不到,返回-1

  }

  }复杂性分析:

  时间复杂度:O(logn),其中n是数组的长度。空间复杂度:O(1)。推荐:以上《java视频教程》是讲解Java经典算法二分搜索法原理及实现的详细内容。更多请关注我们的其他相关文章!

郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

留言与评论(共有 条评论)
   
验证码: