c - 使用指针和两个结构数组进行桶排序

标签 c algorithm sorting data-structures linked-list

我正在开发一个电话簿应用程序,我想根据客户端的名称对表示每个条目的节点进行排序。我想在我有两个链表结构数组的地方使用桶排序算法。

要注意的是,我不想使用删除和构造来通过存储桶移动节点。

有没有更简单的方法,使用指针?在桶中移动指针可能要容易得多,但我不知道如何实现它。我在 C 中执行此操作,但欢迎使用任何其他语言提供帮助。

感谢您的帮助。

最佳答案

这实际上取决于条目的存储方式。如果您将每个条目存储在链表单元格中,那么只需将元素从原始列表中移出并移入桶中,您就可以仅使用恒定的内存开销进行桶排序。这将需要您使用指针和指针重新布线,但它并不像听起来那么困难。您只需将单元格从主列表中拼接出来并放入桶中进行排序。

一个问题 - 您是否有理由要使用桶排序来对名称进行排序?您可以使用桶排序对字符串进行排序,但这样做几乎肯定需要两个以上的桶;可能你会为字母表中的每个字母一个,一个代表“这里没有字母”。如果您有一个链表,您可能需要考虑研究归并排序的可能性,因为它实现起来不太困难并且具有出色的运行时保证。

关于c - 使用指针和两个结构数组进行桶排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4963206/

相关文章:

c - C 中没有第二次递归调用的合并排序

algorithm - 三角函数的范围缩减

string - Knuth–Morris–Pratt 算法 : border array

ios - 如何在排序数组中将一行代码从 Objective-C 转换为 Swift?

sql - 在应用程序中排序与在数据库中排序

python - 如何在读取之前对目录中的文件进行排序?

python - 当 C 绑定(bind)阻塞时,Python 会释放 Global Interneter Lock 吗?

c - 如何将矩阵的一行元素传递给函数?

python - 在python中形成包含整数数组、字符串列表的结构包

c++ - 反转 4x4 矩阵