#include <iostream>
int findFirstBig(int data[],int start, int end)
{
int key = data[end];
int i = start ;
while( i < end && data[i] <= key )
i++;
if ( i != end ){ //find
return i;
}
return -1;
}
int isTree(int data[], int index, int number)
{
index++; //第一个数不用判断。
while ( index < number ) {
if ( data[index] < data[number])
{
return false;
}
index++;
}
return true;
}
bool sortPro(int data[],int start, int end)
{
if(start < end) {
int index_Big = findFirstBig(data, start, end);
if ( index_Big != -1) { //数则分为两段
if (isTree(data, index_Big, end))
{
int flag = sortPro(data, start, index_Big-1);
if (flag) {
flag = sortPro(data, index_Big, end-1);
}
return flag;
}
else
return false;
}
else {
return sortPro(data, start, end-1) ;
}
}
return true;
}
int main()
{
int data[]={5,7,6,9,11,10,8};
//if(sortPro(data, 0, 6))
// std::cout<<"success";
//else
// std::cout<<"false";
int t[]={7, 4, 6, 5};
if(sortPro(t, 0, 3))
std::cout<<"success";
else
std::cout<<"false";
return 0;
}