折半查找法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的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。