博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
查找旋转数组的最小值
阅读量:4615 次
发布时间:2019-06-09

本文共 1095 字,大约阅读时间需要 3 分钟。

查找旋转数组的最小值:

假设一个排序数组以某个未知元素为支点做了旋转,找出旋转后数组中的最小值,假定数组中没有重复元素。

如:原数组1,2,3,4,5,6,7旋转后得到4,5,6,7,1,2,3。旋转后的最小值为1。

问题分析:

这里不做过多的介绍,旋转之后的数组实际上可以划分为两个有序的数组,前面子数组的大小大于后面子数组的大小。

最小的元素就是两个数组的分界线。

程序实现:

1 /*************************************** 2 FileName FindMinRotateArray.cpp 3 Author : godfrey 4 CreatedTime : 2016/5/3 5 ****************************************/ 6 #include 
7 #include
8 #include
9 #include
10 #include
11 #include
12 13 using namespace std;14 15 int FindMinRotateArray(int* A,int size){16 int Low = 0;17 int High = size-1;18 int mid;19 while(Low < High){20 mid = (Low + High) / 2;21 if(A[mid] > A[High]){ //最小值在右半部份22 Low = mid + 1;23 }24 else if(A[mid] < A[High]){ //最小值在左半部分25 High = mid;26 }27 }28 return A[Low];29 }30 int main()31 {32 int a[] = { 4,5,6,7,1,2,3};33 int FindMinNum = FindMinRotateArray(a,sizeof(a)/sizeof(int));34 cout<<"the FindMinNum: ";35 cout<
<

运行结果:

转载请注明出处:

C++博客园:godfrey_88

转载于:https://www.cnblogs.com/gaobaoru-articles/p/5456640.html

你可能感兴趣的文章
Ulfius交叉编译——搭建http服务器端
查看>>
Linux——进度条实现
查看>>
Linux——定时器与计时器
查看>>
Linux——makefile编写
查看>>
vi/vim使用
查看>>
C/C++——指针
查看>>
讨论Spring整合Mybatis时一级缓存失效得问题
查看>>
Maven私服配置Setting和Pom文件
查看>>
Linux搭建Nexus3.X构建maven私服
查看>>
Notepad++使用NppFTP插件编辑linux上的文件
查看>>
NPOI 操作Excel
查看>>
MySql【Error笔记】
查看>>
vue入门
查看>>
JS线程Web worker
查看>>
Flex的动画效果与变换!(三)(完)
查看>>
mysql常见错误码
查看>>
Openresty 与 Tengine
查看>>
使用XV-11激光雷达做hector_slam
查看>>
布局技巧4:使用ViewStub
查看>>
ddt Ui 案例2
查看>>