#include<iostream>
#include<cstdlib>
using namespace std;
#define N 15
//桶排序
void swap(int *a,int j,int i)
{
int buf=a[j];
a[j] = a[i];
a[i] = buf;
}
void printArray(int *a,int len)
{
for(int i=0;i<len;i++)
cout<<a[i]<<" ";
cout<<endl;
}
void searchMaxAndMin(int *a,int len,int*ret)
{
ret[0] = a[0];
ret[1] = a[1];
for(int i=1;i<len;i++)
{
ret[0] = ret[0] > a[i] ? ret[0] : a[i];
ret[1] = ret[1] < a[i] ? ret[1] : a[i];
}
}
void BucketSort(int *a,int len)
{
int MaxAndMIn[2]={0};
searchMaxAndMin(a,N,MaxAndMIn);
int *Buckets = new int[MaxAndMIn[0] - MaxAndMIn[1] + 1]();
for(int i=0;i<len;i++)
{
Buckets[a[i]]++;
}
for(int i=0,j=0;i<MaxAndMIn[0] - MaxAndMIn[1] + 1;i++)
{
while(Buckets[i]-- > 0)
{
a[j++] = i;
}
}
delete[] Buckets;
}
int main()
{
int a[N]={6,7,8,1,2,3,4,1,0,7,1,4,5,11,31};
//int b[N] = {1,2,3,4,5};
BucketSort(a,N);
printArray(a,N);
return 0;
}
桶排序
最新推荐文章于 2024-04-19 14:46:11 发布