我想知道如何在单链表上实现冒泡排序。比方说,我们有一个由以下节点组成的列表:
struct node {
int value;
struct node* next;
}
我相信有两种方法可以实现这个目标:
1)to directly exchange `values` in memory
2)to change `nexts`, to point to a different nodes
哪种方式更有效率,有人可以给我一些如何做的例子吗?我知道使用冒泡排序与其他排序算法相比效率不高。
答案 0 :(得分:3)
您的值非常小,因此我希望将它们交换为比更改指针结构更有效。与往常一样,您必须在用例中测量实际性能以确保。
答案 1 :(得分:2)
如果您交换nexts
,则必须考虑各种特殊情况。这使得它比改变value
慢一点。如果您的值具有更多结构,则可以选择实现next
- 版本或通过指针替换值。