在C中按字母顺序对一长串单词进行排序的最佳方法是什么?

时间:2014-04-02 08:07:37

标签: c alphabetical-sort

正如标题所示,我需要按字母顺序排列相当多的(数十万)字符串。我有几个链表,每个链表包含特定长度的单词。也就是说,我有一个6个字母的字符串列表,7个字母的字符串列表,......,10个字母的字符串列表。

我正在考虑使用基数排序,但我想看看是否有更好的选项,因为在字母顺序排列所有单词长度相同的列表时我找不到任何具体内容。

编辑:

我有一个非常长的单词列表,大小不一。我目前正在浏览列表并将单词排列为大小类别。也就是说,当我遇到长度为6的单词时,它会进入“6长度”列表。当我为每个单词做这个时,我实际上创建了一个新的单词对象,其中包含原始单词及其按字母顺序排列的版本(例如stack,ackst)。我想按字母顺序排列每个“长度”列表,以便我可以轻松找到并分组字谜。

1 个答案:

答案 0 :(得分:1)

我不认为长度与分类相同的事实,是吗?你不能解释你认为会影响排序的方式。

我推荐的排序链表的方法:不要。 :)改为对数组进行排序,并根据需要转换为链接列表。它很可能会更快更容易。

基本上:

  1. 走完清单以确定长度。
  2. 分配一组值指针(在您的情况下,"值"表示字符串)。
  3. 再次遍历列表,将i:th数组元素设置为指向第i个列表项的数据。
  4. 使用qsort()对数组进行排序。
  5. 第三次走列表,用i:th数组元素覆盖第i个项目的数据
  6. 完成。
  7. 当然,您可以分别为每个链接列表执行此操作。