//鸟巢排序
#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;
}
}
}