算法题目---旋转数组的最小数字
来源:互联网 发布:西安java招聘三年 编辑:程序博客网 时间:2024/06/16 07:15
把一个数组最开始的若干个元素搬到数组的末尾,我们称之为数组的旋转。
输入一个递增排序的数组的一个旋转,输出数组的最小元素。
using namespace std;
int MinInOrder(int *numbers,int index1,int index2)
{
int result = numbers[index1];
for(int i=index1+1;i<=index2;++i)
{
if(result > numbers[i])
result = numbers[i];
}
return result;
}
int Min(int *numbers,int length)
{
if(numbers == NULL || length <= 0)
printf("error\n");
int index1 = 0;
int index2 = length-1;
int indexMid = index1;
while(numbers[index1] >= numbers[index2])
{
if(index2 - index1 == 1)
{
indexMid = index2;
break;
}
indexMid = (index1 + index2) /2 ;
if(numbers[index1] == numbers[index2] && numbers[indexMid] == numbers[index1])
return MinInOrder(numbers,index1,index2);
if(numbers[indexMid] >= numbers[index1])
index1 = indexMid;
else if(numbers[indexMid] <= numbers[index2])
index2 = indexMid;
}
return numbers[indexMid];
}
void test()
{
//int numbers[10] = {4,5,6,6,7,10,111,2,3,4};
int numbers[5] = {1,0,1,1,1};
//int numbers[5] = {1,1,1,0,1};
int a = Min(numbers,5);
printf("a=%d\n",a);
}
阅读全文
0 0
- 算法题目---旋转数组的最小数字
- 题目3:旋转数组的最小数字
- 题目1386:旋转数组的最小数字
- 题目1386:旋转数组的最小数字
- 题目1386:旋转数组的最小数字
- 题目1386:旋转数组的最小数字
- 题目1386:旋转数组的最小数字
- 题目1386:旋转数组的最小数字
- 题目:旋转数组的最小数字
- 题目1386:旋转数组的最小数字
- [算法]找出旋转数组的最小数字
- 算法复习:旋转数组的最小数字
- 算法-旋转数组的最小数字
- 题目1386:旋转数组的最小数字-九度
- 九度 题目1386:旋转数组的最小数字
- 九度OJ-题目1386:旋转数组的最小数字
- 题目1386:旋转数组的最小数字 剑指offer08
- 旋转数组的最小数字
- 百度地图使用 自定义标注的图标
- 颜色渐变-CAGradientLayer的使用
- LNK1123: 转换到 COFF 期间失败: 文件无效或损坏
- ListView 分组实现方式巩固
- python文件夹遍历,文件操作,获取文件修改创建时间
- 算法题目---旋转数组的最小数字
- 女程序员必知必学舞步学院防渣男指南
- mysql性能优化
- 安卓6.0动态获取权限
- 理解Python的With as语句
- 搭建Tomcat集群&通过Redis缓存共享session的一种流行方案
- [原创]MFC消息映射机制
- 关于linux操作
- zookeeper-3.4.10安装教程---分布式配置