开发者

Which sorting algorithm used here

In an online event, I have to complete a partially finished code. They use linklist data structure to store each element.The time complexity is O(n*n) And in the outer (for) loop, the iteration is completed when node->next!= NULL (i.e. only n-1 checks). Inner (for) loop, there are n checks until (ptr becomes NULL)

say, there are 5 elements. And, Elements in given order 5 ->3 ->1 ->2 ->4 ->NULL

Sort Cycles:

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

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

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

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

Elements in so开发者_开发知识库rted order

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

Which sorting algorithm is used here?


This is an instance of selection sort. Notice that after iteration i, the first i elements of the list are now in sorted order, and that the element that was moved into the ith position is swapped with the element that used to be there. For example, here's the change from the first iteration to the second:

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

Notice that 1 (the smallest element) has been swapped to the front, but the rest of the elements are in the same order. Similarly, between the second and third iterations, you see this:

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

Here, 2, the second-smallest element, is swapped to the second position, but the rest of the elements are in the same order.

I'm not sure why they opted to use selection sort here. There are much better ways to sort a linked list.

Hope this helps!


It looks like selection sort, firstly the smallest of all and then the smallest of the rest and put the result after the first.

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜