gpt4 book ai didi

c++ - 冒泡排序在链表中第一次不起作用

转载 作者:行者123 更新时间:2023-11-28 07:03:55 25 4
gpt4 key购买 nike

我正在尝试对我的链表进行冒泡排序,它从第一次开始就不起作用,但是如果我调用该函数两次它排序很好,例如如果列表是:9 8 7 6 5 4 3 2 1,排序返回4 3 2 1 5 6 7 8 9!这里有什么错误?

void sort() {

if(Head == NULL)
cout << "Sorry but your list is empty! \n";
else {

int i,j,temp,k = count();
node *current,*nextNode;

for(i=0; i<k-1; i++,k--) {
current = Head;
nextNode = current->Next;

for(j = 1; j<k; j++) {
if(current->item > nextNode->item){
temp = current->item;
current->item = nextNode->item;
nextNode->item = temp;
}
current = current->Next;
nextNode = nextNode->Next;
}
}
cout << "Sorting Succeeded!\n";
}
}

最佳答案

不增加 i .自 j从 1 开始,所以 i应该总是从 0 开始循环。
更改 for(i=0; i<k-1; i++,k--)
for(i=0; i<k-1; k--)

for(i=0; i<k-1; i++,k--)应该运行 k-1 次。但是当你递增 i和递减 k ,那么 i 之间的差异和 k以两倍的速度减少,所以它运行 k/2次等只有k/2元素正在排序。再次运行时,剩余 k/2元素也被排序。

关于c++ - 冒泡排序在链表中第一次不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22053192/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com