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;
}
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;
}