链接列表冒泡排序

时间:2011-05-30 18:12:13

标签: c list sorting

我想知道如何在单链表上实现冒泡排序。比方说,我们有一个由以下节点组成的列表:

struct node {
   int value;
   struct node* next;
}

我相信有两种方法可以实现这个目标:

1)to directly exchange `values` in memory
2)to change `nexts`, to point to a different nodes

哪种方式更有效率,有人可以给我一些如何做的例子吗?我知道使用冒泡排序与其他排序算法相比效率不高。

2 个答案:

答案 0 :(得分:3)

您的值非常小,因此我希望将它们交换为比更改指针结构更有效。与往常一样,您必须在用例中测量实际性能以确保。

答案 1 :(得分:2)

如果您交换nexts,则必须考虑各种特殊情况。这使得它比改变value慢一点。如果您的值具有更多结构,则可以选择实现next - 版本或通过指针替换值。