示例:A[8] = {4,5,6,7,8,9,1,2,3} 查找某个数字是否在数组当中,也可以二分查找。如下:
// test50.cpp : Defines the entry point for the console application.
//
#include "stdafx.h"
#include<iostream>
using namespace std;
int find(int A[] , int left , int right , int pivot)
{
if(left > right)
return -1;
if(left == right && A[left] == pivot)
return left;
int mid = (left + right)/2;
if(A[mid] == pivot)
return mid;
else if(A[mid] < pivot) //pivot 比 A[mid]大
{
if(A[mid] > A[left]) //max 在mid的右边
{
return find(A , mid + 1 , right , pivot);
}
else // max 在 mid 的左边
{
if(pivot > A[right])
return find(A,left, mid - 1 , pivot);
else
return find(A,mid + 1 , right ,pivot);
}
}
else //pivot 比 A[mid] 小
{
if(A[mid] > A[left]) //min 在 mid的右边
{
if(pivot < A[left]) //
return find(A,mid + 1 , right , pivot);
else
return find(A,left, mid - 1 ,pivot);
}
else //min 在 mid 左边
{
//min 在mid的左边
return find(A,left ,mid - 1 , pivot);
}
}
}
int main(int argc, char* argv[])
{
int A[9] = { 4,5,6,7,8,9,1,2,3};
int pos = find(A,0 , 8 , 3);
cout<<pos<<endl;
return 0;
}