#include <iostream>
using namespace std;
int a[]={3,4,5,0,2};//原数组为0 2 3 4 5,旋转后就成了这个
int Partition(int start,int end)
{
swap(a[7],a[end]);
int i;
int record=a[end];
int leftregion=start;
for(i=start;i<end;i++)
{
if(a[i]<=record)
{
if(i!=leftregion)
swap(a[i],a[leftregion]);
leftregion++;
}
}
swap(a[leftregion],a[end]);
return leftregion;
}
int FindMinNumber(int index1,int index2)
{
int ret=a[index1];
for(int i=index1;i<=index2;i++)
{
if(a[i]<ret)
ret=a[i];
}
return ret;
}
int Rotate(int start,int end)
{
int index1=start;
int index2=end;
int mid;
while(a[index1]>=a[index2])
{
if(index2-index1==1)
return a[index2];
mid=(index1+index2)/2;
if(a[mid]==a[index1]&&a[index1]==a[index2])
return FindMinNumber(index1,index2);
if(a[mid]>=a[index1])
index1=mid;
else if(a[mid]<=a[index2])
index2=mid;
}
}
int main()
{
cout<<Rotate(0,4)<<endl;
return 0;
}
寻找旋转有序数组的最小值
最新推荐文章于 2024-03-14 05:15:00 发布
2064

被折叠的 条评论
为什么被折叠?



