二分查找法: 如下例程序: #include<iostream> using namespace std; //快速排序进行排序 void quickSort(int* qs,int low,int high) { int flag = 0; //比较标志位 int i=low,j=high; //游标 flag = qs[low]; if(high > low) { while(j>i) { while((j>i)&&(flag<=qs[j])) j--; qs[i] = qs[j]; while((j>i)&&(flag>=qs[i])) i++; qs[j] = qs[i]; } qs[i] = flag; quickSort(qs,low,i-1); quickSort(qs,i+1,high); } } //二分查找算法 int binSearch(int* l,int num,int low,int high) { int mid = 0; int flag = 0; if(low > high) return 0; mid = (high + low) / 2; //cout << *(l+mid) << endl; if(*(l+mid) == num) //find it { flag = 1; } else { if(*(l+mid) > num) flag = binSearch(l,num,low,mid-1); if(*(l+mid) < num) flag = binSearch(l,num,mid-1,high); } return flag; } void print(int *s,int len) { int i = 0; for(i=0;i<len;i++) cout << *(s+i) <<" "; cout << endl; } int main() { int list[10] = {49,36,65,97,76,13,27,49,15,77}; int num,find; quickSort(list,0,9); print(list,10); cout << "input the num what you want:"; cin >> num; cout << endl; find = binSearch(list,num,0,9); if(find == 1) cout << "find it!!" << endl; else cout << "don't find it!!" << endl; return 0; } 分块排序: 简单来说就是带索引表的二分法和顺序法的结合。 哈希查找