如何实现桶排序?

时间:2013-12-14 18:47:20

标签: c

我是编程新手,我需要在c中实现桶排序。我需要使用链表进行存储桶排序。 我的困惑是如何创建一个链表列表,以及如何根据值将值插入链表。 我在网上发现的其他程序太复杂了。我无法理解它们。所以有人可以帮助我

2 个答案:

答案 0 :(得分:0)

首先创建一个链接列表,其中包含所需的所有功能,如添加,删除,交换等,然后将所有未排序的数据添加到其中,然后将列表传递给实际对列表进行排序的函数。并使用交换等函数交换对象(整数,字符或字符串)。

如果你是c的新手,可能会有点混乱。但首先开始,然后你可以粘贴一些代码供我们查看和帮助,但不要指望有人会给你完整的解决方案。

这也是对存储桶排序的一个很好的解释,这可能有助于您了解需要实现的内容。

http://www.youtube.com/watch?annotation_id=annotation_508951&feature=iv&src_vid=Iiuqrns0Gwk&v=ovAfqUafjAA

这可以帮助您理解c中链表的实现 http://spicemind.com/notes/c/c-linked-list-implementation/

=============================================== ===============================

是的,你可以创建一个链表列表 假设你实现了一个链表:

struct linkedlist
{
  //implementation of linked list.
};

然后在main中你可以声明一个链表:

struct linkedlist mylist1;

并在main中创建一个链表的数组:

struct linkedlist[10] mylist2;

访问此链表数组的不同部分:     mylist2 [0] .data = x; //假设您在链接列表中有一个名为data的int类型,您可以在其中存储数据。等等

答案 1 :(得分:0)

最常见的铲斗排序变量在零和最大值M之间的n个数字输入列表上运行,并将值范围分成n个桶,每个桶的大小为M / n。如果使用插入排序对每个存储桶进行排序,则可以显示排序在预期的线性时间内运行(其中平均值取自所有可能的输入)。但是,这种性能随着聚类而降低;如果很多值靠近在一起,它们都将落入一个桶中,并且可以缓慢排序。

Explanation Video for Bucket Sort