排序算法c语言 桶排序算法,桶排序算法

该楼层疑似违规已被系统折叠 隐藏此楼查看此楼

//2.21 桶排序

#include

#include

#define SIZE 100

void bucket_sort(unsigned *,int);//桶排序函数的原型

void print(unsigned *,int);//打印函数的原型

int main()

{

unsigned array[SIZE];

int i=0;

//为数组元素随机赋值

for(i=0;i

array[i]=rand();

printf("排序前\n");

print(array,SIZE);

//排序

bucket_sort(array,SIZE);

printf("排序后\n");

print(array,SIZE);

return 0;

}

void bucket_sort(unsigned * arr,int len)

{

unsigned *buckets[10];//指针数组

unsigned n=1;//用于取整数各位上的值

int index;//数组下标计数索引

int indexs[10];//各个桶下标计数索引

int i,j;

//分配动态内存作为桶

for(i=0;i<10;++i)

buckets[i]=(unsigned *)malloc(sizeof(unsigned)*len);

while(1)

{

//计数索引清零

index=0;

for(i=0;i<10;++i)

indexs[i]=0;

//数组至桶

for(i=0;i

buckets[arr[i]/n%10][indexs[arr[i]/n%10]++]=arr[i];

//桶至数组

for(i=0;i<10;++i)

for(j=0;j

arr[index++]=buckets[i][j];

//为取元素的下一位做准备

n*=10;

//判断是否该结束

for(i=0;arr[i]

if(i==len) break;

}

//释放动态内存

for(i=0;i<10;++i)

free(buckets[i]);

}

void print(unsigned * arr,int len)

{

int i=0;

for(i=0;i

{

printf("%8d",arr[i]);

//5个元素一行

if((i+1)%5==0)

printf("\n");

}

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值