//在旋转的有序数组中找最小值
#include<iostream>
using namespace std;
int search( int list[] , int length , const int v ) {
int s = 0;
int e = length;
while( s <= e ) {
int mid = ( s + e ) / 2;
if( list[ mid ] == v ) {
return mid;
}
//在某一边斜坡上
if( ( list[ mid ] >= list[ s ] ) && ( list[ mid ] <= list[ e ] ) ) {
return s;
}
//
if( ( list[ mid ] >= list[ s ] ) && ( list[ mid ] >= list[ e ] ) ) {
s = mid + 1;
}
if( ( list[ mid ] <= list[ s ] ) && ( list[ mid ] <= list[ e ] ) ) {
e = mid - 1;
}
}
return -1;
}
int main() {
int list[ 10 ];
int i;
int s = 9999;
for( i = 0 ; i < 10 ; i ++ ) {
cin >> list[ i ];
}
cout << search( list , 9 , s ) << endl;
return 1;
}
/*
4 5 6 7 8 9 0 1 2 3
5 6 7 8 9 0 1 2 3 4
*/
旋转数组中的最小元素
最新推荐文章于 2021-06-13 10:13:40 发布