桶排序

typedef struct node *link;
struct node
{
double value;
 link   next;
};


void  BucketSort(double *arr,int length)
{
     int counter=0;
     node  *key=new node[10];
link p,q;
for(int i=0;i<10;i++)
{
key[i].value=0;
key[i].next=NULL;
}

for(int i=0;i<length;i++)
{
link temp= new node();
temp->value=arr[i];
temp->next=NULL;
      int  number=arr[i]*10;
 if(key[number].next==NULL)
 {
 key[number].next=temp;
 }
 else{
 p=&key[number];
 q=key[number].next;
 while((q!=NULL)&&(q->value<=arr[i]))
 {
 p=p->next;
 q=q->next;
 }
 temp->next=q;
 p->next=temp;
 }
}
  for(int j=0;j<10;j++)
  {
link p= key[j].next;
   if (p==NULL)
continue;
while(p!=NULL)
{
arr[counter++]=p->value;
p=p->next;
}
  }
}

int main()
{
double array[]={0.78, 0.17, 0.39, 0.26, 0.72, 0.94, 0.21, 0.12, 0.23, 0.68};
BucketSort(array,10);
for(int i=0;i<10;i++)
        cout<<array[i]<<" ";
cout<<endl;
return 0;
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值