查找旋转数组的最小值-- 二分查找
来源:互联网 发布:mac设置隐藏文件夹 编辑:程序博客网 时间:2024/05/21 18:02
假定一个排序数组以某个未知元素为支点做了旋转,如:原数组0 1 2 4 5 6 7旋转后得到 45 6 7 0 1 2。请找出旋转后数组的最小值。假定数组中没有重复数字
o 旋转之后的数组实际上可以划分成两个有序的子数组:前面子数组的大小都大于后面子数组中的元素
n 4 5 6 7 0 1 2
n 注意到实际上最小的元素就是两个子数组的分界线。
思路: 4 5 6 7 0 1 2
o 用两个指针low,high分别指向数组的第一个元素和最后一个元素。如果是正常的排序数组(元素间不重复),第一个元素肯定小于最后一个元素。
o 计算中间位置mid= (low+high)/2;
n 若:A[mid]>A[low],则A[low,low+1….mid-1,mid]是递增序列,最小元素位于子数组A[mid+1,mid+2,…high]中。因此,做赋值low=mid+1;
n 若:A[mid]<A[low],则A[low,low+1….mid-1,mid]不是递增序列,即:中间元素该子数组中,做赋值high=mid。
n 注:对偶地,若考察A[mid]与A[high]的关系,能够得到相似的结论。
阅读全文
0 0
- 查找旋转数组的最小值-- 二分查找
- 查找旋转数组的最小值
- 查找旋转数组的最小值
- 查找旋转数组的最小值
- 旋转数组的二分查找
- 旋转数组的二分查找
- 旋转数组的二分查找
- 旋转数组的二分查找
- 旋转数组的二分查找
- 旋转数组的二分查找
- 旋转数组的二分查找
- 算法学习-查找旋转数组的最小值
- 有序数组或者有序数组的旋转数组 查找最小值
- 旋转有序数组的二分查找
- 旋转有序数组的二分查找
- 旋转有序数组的二分查找
- 旋转数组(二分查找)
- 二分查找应用-旋转数组
- C++设计模式----单例模式
- Selenium Webdriver 学习总结-Advanced Usage-Cookie、Profile(七)
- 微软的MR生态,前景光明吗?
- 信息管理与信息系统专业的来龙去脉——基于六所大学个案的分析(转)
- Comparable与Comparator
- 查找旋转数组的最小值-- 二分查找
- HDU -- 5700 区间交 【思维 + 线段树】
- spring注入对象类型属性
- 【Linux学习笔记】31:数值运算的方法
- 读书笔记:SQL必知必会 【第13-15课】
- 第三方登陆与分享
- HDU6188-Duizi and Shunzi
- Unity_2D游戏屏幕适配问题_081
- POJ