将一个数组最开始的若干个元素搬到数组的末尾,称之为数组的旋转。输入一个已排好序数组的一个旋转,求该旋转数组的最小元素。如,数组{3,4,5,1,2}为有序数组{1,2,3,4,5}的一个旋转数组,该数组的最小值为1。 根据设计思想,采用C或C++语言描述

admin2018-07-17  42

问题 将一个数组最开始的若干个元素搬到数组的末尾,称之为数组的旋转。输入一个已排好序数组的一个旋转,求该旋转数组的最小元素。如,数组{3,4,5,1,2}为有序数组{1,2,3,4,5}的一个旋转数组,该数组的最小值为1。
根据设计思想,采用C或C++语言描述算法,关键之处给出注释。

选项

答案算法的实现如下: int Min(int *numbers,int length){ if(numbers==0||length<=0) return 0; int index1=0; //第一个指针 int index2=length一1; //第二个指针 int indexMid=index1, //中间指针 while(numbers[indexl]>=numbers[index2]){ if(index2一index1==1){ indexMid=index2; break; } indexMid=(index1+index2)/2; if(numbers[indexMid]>=numbers[index1]) //在右区间 index1=indexMid; else if(numbers[indexMid]<=numbers(index2])//在左区间 index2=indexMid; } return numbers[]indexMid]; }

解析
转载请注明原文地址:https://kaotiyun.com/show/d8Ri777K
0

最新回复(0)