这里使用哪种排序算法

时间:2011-08-24 01:51:32

标签: algorithm sorting linked-list

在线活动中,我必须完成部分完成的代码。 他们使用链表数据结构来存储每个元素。时间复杂度为O(n * n) 并且在外(for)循环中,当node-> next!= NULL(即仅n-1个检查)时,迭代完成。 内部(for)循环,有n次检查,直到(ptr变为NULL)

说,有5个元素。 和, 给定顺序的元素 5 - > 3 - > 1 - > 2 - > 4 - > NULL

排序周期:

1 - > 3 - > 5 - > 2 - > 4 - > NULL

1 - > 2 - > 5 - > 3 - > 4 - > NULL

1 - > 2 - > 3 - > 5 - > 4 - > NULL

1 - > 2 - > 3 - > 4 - > 5 - > NULL

排序顺序的元素

1 - > 2 - > 3 - > 4 - > 5 - > NULL

这里使用哪种排序算法?

2 个答案:

答案 0 :(得分:5)

这是selection sort的一个实例。请注意,在迭代i之后,列表的前i个元素现在按排序顺序排列,并且移动到第i个位置的元素与之前的元素交换。例如,这是从第一次迭代到第二次迭代的变化:

5 ->3 ->1 ->2 ->4 ->NULL
1 ->3 ->5 ->2 ->4 ->NULL

请注意,1(最小元素)已交换到前面,但其余元素的顺序相同。同样,在第二次和第三次迭代之间,您会看到:

1 ->3 ->5 ->2 ->4 ->NULL
1 ->2 ->5 ->3 ->4 ->NULL

这里,2,第二个最小的元素,交换到第二个位置,但其余元素的顺序相同。

我不确定他们为什么选择在这里使用选择排序。有 much better ways to sort a linked list

希望这有帮助!

答案 1 :(得分:0)

它看起来像选择排序,首先是最小的,然后是最小的剩余部分,并将结果放在第一个之后。