1,题意:
原来一个有序数组,分成前后两部分并将两部分交换得到一个新数组。
写一个函数,参数是这个新数组,找到这个分开的节点。
2,实现代码:
原来一个有序数组,分成前后两部分并将两部分交换得到一个新数组。
写一个函数,参数是这个新数组,找到这个分开的节点。
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;
}