对已经排好的数组进行折半查询. #include<stdio.h> int search(int arr[],int start,int end,int key) { int pos=(start+end)/2; //no such item:key if(start>end || (start==end && arr[start]!=key)){ return -1; } if(arr[pos]==key){ return pos; }else if(arr[pos]>key){ return search(arr,start,(start+end)/2-1,key); }else if(arr[pos]<key){ return search(arr,(start+end)/2+1,end,key); } return -1; } int main() { int arr[7]={1,3,5,7,8,11,24}; int k=search(arr,0,6,8); printf("%d in arr index is %d",8,k+1); getchar(); return 0; } 参考: 1.<算法导论> 第二版2.3-5