//鸟巢排序 #include <iostream> using namespace std; void pigen_hole_sort(int *array,int length); int main() { int a[] = {4,6,1,8,9,2,3,5,7,0,1,10,19,12,16,14}; int n = sizeof(a)/sizeof(a[0]); pigen_hole_sort(a,n); for(int i=0; i!=n; i++) { cout << a[i] << " "; } cout<<endl; return -1; } void pigen_hole_sort(int *a, int length) { int max = a[0]; for(int k=0; k!=length; k++) { if(max<a[k]) { max=a[k]; } } int *b = new int[max+1]; memset(b,0,sizeof(int)*(max+1)); //int b[256] = {0}; for(int i=0; i!=length; i++) { b[a[i]]++; } int index=0; for(int j=0; j!=max+1; j++) { for(int k=0; k<b[j]; k++) { a[index++] = j; } } }