C++实现桶排序

本文详细介绍了如何使用C++实现桶排序算法,包括代码实现和排序过程展示。

C++实现桶排序:


#include<iostream>

using namespace std;
struct node
{
double data;
node* next;
};
void bucketsort(double *a,int n)
{
node *b=new node[n];
for(int i=0;i<n;i++)
{
b[i].data=0;
b[i].next=NULL;
}
for(int i=0;i<n;i++)
{
int j=(int)(a[i]*n);
node *p=new node;
p->data=a[i];
p->next=NULL;
if(NULL==b[j].next)
{
b[j].next=p;
}
else
{
node *q,*r;
q=&b[j];
r=b[j].next;
while(NULL!=r&&r->data<=a[i])
{
q=q->next;
r=r->next;
}
q->next=p;
p->next=r;
}
}
//display
for(int i=0;i<n;i++)
{
if(NULL==b[i].next)
continue;
else
{
while(NULL!=b[i].next)
{
cout<<b[i].next->data<<" ";
   b[i].next=b[i].next->next;
}
}
}
cout<<endl;
//释放空间
for(int i=0;i<n;i++)
{
if(NULL==b[i].next)
continue;
else
{
while(NULL!=b[i].next)
{node *p=b[i].next;
b[i].next=p->next;
delete p;
p=NULL;
}
}
}
}
int main()
{
double a[10]={0.78,0.17,0.39,0.26,0.72,0.94,0.21,0.12,0.23,0.68};
bucketsort(a,10);
return 0;
}



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值