旋转数组的最小数字

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了旋转数组的最小数字相关的知识,希望对你有一定的参考价值。

旋转数组的最小数字

题目:把一个数组最开始的若干个元素搬到数组的末尾,称之为数组的旋转。输入一个递增排序的数组的一个旋转,输出旋转数组的最小元素。例如数组{3,4,5,1,2}为{1,2,3,4,5}的一个旋转,该数组的最小值为1。

#include<stdio.h>
#include<stdlib.h>
#include<string.h>
int find_min(int*arr, int length)
{
//if (arr = NULL || length <= 0)
//throw new std::exception(Invalid parameters);
int left = 0;
int right = length - 1;
int mid = left;
while (arr[left] >= arr[right])
{
if (right - left == 1)
{
mid = right;
break;
}
mid = (left + right) / 2;
if (arr[mid] >= arr[left])
{
left = mid;
}
else if (arr[mid] <= right)
{
right = mid;
}
}
return arr[mid];
}
int main()
{
int arr[] = { 3, 4, 5, 1, 2 };
int ret = find_min(arr, sizeof(arr) / sizeof(arr[0]));
printf("%d\n", ret);
system("pause");
return 0;
}


 

结果:

1

请按任意键继续. . .


以上是关于旋转数组的最小数字的主要内容,如果未能解决你的问题,请参考以下文章

《剑指offer》— JavaScript旋转数组的最小数字

旋转数组的最小数字

剑指 Offer 11. 旋转数组的最小数字 的详细题解

剑指offer旋转数组的最小数字

剑指offer——旋转数组的最小数字

剑指OFFER旋转数组的最小数字