在线活动中,我必须完成部分完成的代码。 他们使用链表数据结构来存储每个元素。时间复杂度为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
这里使用哪种排序算法?
答案 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)
它看起来像选择排序,首先是最小的,然后是最小的剩余部分,并将结果放在第一个之后。