旋转数组的最小值---二分思想
来源:互联网 发布:数控弹簧机编程 编辑:程序博客网 时间:2024/05/18 02:08
题目: 把一个数组最开始的若干个元素搬到数组的末尾, 我们称之数组的旋转。输入一个递增排序的数组的一个旋转, 输出旋转数组的最小元素。例如数组{3,4, 5, 1, 2 }为{ l1,2,3, 4,5}的一个旋转,该数组的最小值为 1。
package arrayTest;/** * 反转数组查找最小值,利用的是二分查找的思想 * @author duola * */public class reverseAndSearchMinum { private static int searchmin(int a[]) { if (a.length <= 0 || a == null) { System.out.println("wrong"); } int low = 0, high = a.length - 1; int mid = low; while (low <= high) { // 当处理范围只有两个数据时,返回后一个结果 ,循环跳出条件 if (high - low == 1) { mid = high; break; } mid = (low + high) / 2; //如果中间元素值和首尾都相等,只能是顺序扫描 if (a[low] == a[high] && a[low] == a[mid]) { return ordermin(a, low, high); } //如果中间元素值大于等于首位元素,说明中间值位置为左侧有序段 if (a[low] <= a[mid]) { low = mid; } //如果中间元素值小于等于首位元素,说明中间值位置为右侧有序段 else if (a[high] >= a[mid]) { high = mid; } } return a[mid]; } private static int ordermin(int[] b, int from, int to) { int tem = b[from]; for (int i = from + 1; i <= to; i++) { if (b[i] < tem) { tem = b[i]; } } return tem; } public static void main(String[] args) { int[] test = { 3, 4, 5, 2, 2 }; System.out.print(searchmin(test)); }}
0 0
- 旋转数组的最小值---二分思想
- 查找旋转数组的最小值-- 二分查找
- 旋转数组的最小值
- 旋转数组的最小值
- 旋转数组的最小值
- 旋转数组的最小值
- 旋转数组的最小值
- 旋转数组的最小值
- 旋转数组的最小值
- 旋转数组的最小值
- 旋转数组的最小值
- 旋转数组的最小值
- 旋转数组的最小值
- 寻找旋转数组的最小值
- 输出旋转数组的最小值
- 旋转数组的最小值问题
- 求旋转数组的最小值
- 旋转数组的最小值输出
- js上传文件(图片)限制格式及大小为3M · 观止
- org.apache.jasper.JasperException: java.lang.IllegalStateException: No output folder
- windows和linux下的文件路径表示小结
- valgrind 的使用简介
- 记Android Studio自定义属性访问不了的问题
- 旋转数组的最小值---二分思想
- UIScrollView添加AutoLayout的ambiguous content size警告解决方法
- 联想扬天 T4900c电脑文件丢失怎样找回
- Eclipse 寻找迷失的ID
- Docker container常用的命令
- Scrapy初次执行中的错误
- qml listview 实现QQ侧滑删除功能
- 关于“员工没积极性”的问题
- 阿里云OSS对象存储