`
kmplayer
  • 浏览: 497209 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

寻找移位有序数组的转折点

 
阅读更多
1,题意:
原来一个有序数组,分成前后两部分并将两部分交换得到一个新数组。
写一个函数,参数是这个新数组,找到这个分开的节点。
2,实现代码:
#include <iostream>
using namespace std;

#define MAX(a,b) ( a>b? a:b )

int FindIdx(int a[], int l, int u)
{
     if (l == u )
        return 0;
     int mid = (l + u) / 2;
     if (a[mid] > a[mid + 1])
        return (mid + 1);
     else
        return MAX(FindIdx(a, l, mid), FindIdx(a, mid + 1, u));
}

int main()
{
    int data[]={3,3,3,3,1,3,3};
    int n=sizeof(data)/sizeof(data[0]);
    cout<<FindIdx(data,n)<<endl;
    return 0;
}
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics