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