如何在c中实现链表的快速排序

时间:2014-06-10 04:16:05

标签: algorithm sorting linked-list quicksort

我必须为单链表实现快速排序,双链表的快速排序可以使用cormen中指定的算法实现,因为节点具有指向next和previous元素的指针,但我不知道为linkedlist实现quicksort。我搜索过互联网,但无法获得任何有用的东西。任何psudocode或建议都会非常有用。

1 个答案:

答案 0 :(得分:0)

首先使用前向迭代器在数组上实现快速排序。 这是分区步骤。 您维护的不变量如下: a [0]是枢轴元素 我们有两个迭代器(索引)i和j。 对于0 <= k <1。我们有[k]&lt; = pivot。 对于j&lt; = k&lt;我有一个[k]&gt; =枢轴。 k> = i的元素未知。 现在,如果[i]&gt; =枢轴,则递增i。 如果a [i]&lt;枢轴,交换a [i]和[j]并递增i和j。

当你有一个数组工作时,&#34;翻译&#34;算法到单链表。