我正在开发一个电话簿应用程序,我想根据客户端的名称对表示每个条目的节点进行排序。我想在我有两个链表结构数组的地方使用桶排序算法。
要注意的是,我不想使用删除和构造来通过存储桶移动节点。
有没有更简单的方法,使用指针?在桶中移动指针可能要容易得多,但我不知道如何实现它。我在 C 中执行此操作,但欢迎使用任何其他语言提供帮助。
感谢您的帮助。
最佳答案
这实际上取决于条目的存储方式。如果您将每个条目存储在链表单元格中,那么只需将元素从原始列表中移出并移入桶中,您就可以仅使用恒定的内存开销进行桶排序。这将需要您使用指针和指针重新布线,但它并不像听起来那么困难。您只需将单元格从主列表中拼接出来并放入桶中进行排序。
一个问题 - 您是否有理由要使用桶排序来对名称进行排序?您可以使用桶排序对字符串进行排序,但这样做几乎肯定需要两个以上的桶;可能你会为字母表中的每个字母一个,一个代表“这里没有字母”。如果您有一个链表,您可能需要考虑研究归并排序的可能性,因为它实现起来不太困难并且具有出色的运行时保证。
关于c - 使用指针和两个结构数组进行桶排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4963206/