查找(时间复杂度; 二分法)
来源:互联网 发布:linux关闭tomcat报错 编辑:程序博客网 时间:2024/06/07 01:05
package Day52;
//因为最近开始做项目时间就显得很紧张了,停了一个礼拜了快,有点儿偷懒了
/*把一个数组最开始的若干个元素搬到数组的末尾,我们称之为数组的旋转。
输入一个非递减排序的数组的一个旋转,输出旋转数组的最小元素。 例如数组{3,4,5,1,2}为{1,2,3,4,5}的一个旋转,
该数组的最小值为1。 NOTE:给出的所有元素都大于0,若数组大小为0,请返回0。*/
public class Test {
public static void main(String[] args) {
// TODO Auto-generated method stub
}
//最笨的一种方法,也是最先找到的,遍历然后找到最小值
public int minNumberInRotateArray(int [] array) {
int min=1000000;
if(array.length==0)
{
return 0;
}else
{
for(int i=0;i<array.length;i++)
{
if(array[i]<min)
{
min=array[i];
}
}
}
return min;
}
//稍微优化一点的方法,明白题意
public int minNumberInRotateArray1(int [] array) {
for(int i=0;i<array.length;i++)
{
if(array[i+1]<array[i])
{
return array[i+1];
}
}
return array[0];
}
//最好的一种方法,利用二分法,使得其时间复杂度最小,为log(n)
public int minNumberInRotateArray2(int [] array) {
int left=0;
int right=array.length-1;
int medin=-1;
while(array[left]>=array[right])
{
if(right-left==1){
medin= right;
break;//为了跳出循环的条件
}
medin=(left+right)/2;
if(array[medin]>=array[left])//每个条件都要考虑,等号不能丢
{
left=medin;
}
if(array[medin]<=array[right])
{
right=medin;
}
}
return array[medin];
}
}
- 查找(时间复杂度; 二分法)
- 二分法查找时间复杂度计算
- 二分法查找时间复杂度计算
- 时间复杂度-二分法
- 二分法时间复杂度计算分析
- 二分法的时间复杂度+算法的时间复杂度计算
- 查找算法的时间复杂度
- 二分查找时间复杂度分析
- 二分法(折半查找)
- 二分法(折半查找)
- 折半查找(二分法)
- 折半查找(二分法)
- 折半查找(二分法)
- 二分法查找(C)
- 二分法查找(详解)
- 二分法查找(折半查找)
- 二分查找(时间复杂度为O(logn))
- 分治法和二分法的时间复杂度简明分析
- 解决webgl使用canvas.toDataURL()没有内容的问题
- 文章标题
- Ubuntu17.10如何安装网易云音乐并解决无法打开
- 回溯走迷宫
- pcl点云中pcd格式点云定义详解
- 查找(时间复杂度; 二分法)
- Redis雪崩、穿透、热点key等优化
- Android 全局捕获异常
- Java笔试知识点一
- 二叉搜索树的操作题集
- react 中render与return 之间的变量(画红的问题)
- 基于概率论的分类方法:朴素贝叶斯
- python读写文件
- 《从零开始写Javaweb框架》知识点--dispatcherServlet