算法思想同二分查找
#include <bits/stdc++.h>
#define MaxSize 10000
using namespace std;
/*
* Created by HarvestWu on 2018/07/05.
*/
//数组三重查找
int find(int A[], int n,int k)
{
int l, lmid, rmid, r;
l = 0;
r = n - 1;
while (l<=r)
{
lmid = l+(r - l) / 3;//一二段分割点
rmid = r-(r - l) / 3;//二三段分割点
if (k == A[lmid])
return lmid;
else if (k == A[rmid])
return rmid;
else if (k < A[lmid]) //K在第一段
r = lmid - 1;
else if (k < A[rmid]) //K在第二段
l = lmid + 1, r = rmid - 1;
else //K在第三段
l = rmid + 1;
}
}
int main()
{
int k = 0;
int A[MaxSize];
for (int i = 0; i < MaxSize; i++)
A[i] = i;
while (k<100)
printf("%d\n", find(A,MaxSize,k++))
return 0;
}