旋转数组的最小数字
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
请按任意键继续. . .
以上是关于旋转数组的最小数字的主要内容,如果未能解决你的问题,请参考以下文章