gpt4 book ai didi

javascript - 冒泡排序算法有一个错误,一些编号列表在 NodeJS 中不能正确排序

转载 作者:塔克拉玛干 更新时间:2023-11-03 04:52:02 24 4
gpt4 key购买 nike

我是算法方面的新手,我从最底层开始学习冒泡排序。我创建了我的实现,它似乎对 1-100 的数字列表进行了 9/10 次排序。

然而,很少有排序不正确的情况,并且会有 1 个随机数未完全排序。

不确定我的代码中的错误在哪里,已经来到堆栈溢出寻求帮助。

算法.js

const sortArr = [51, 54, 63, 98, 100, 86, 80, 52, 88, 6, 75, 22, 64, 66, 84, 91, 12, 73, 9, 90, 41, 85, 37, 2, 46, 57, 58, 1, 31, 87, 78, 93, 82, 55, 47, 20, 43, 21, 70, 50, 53, 15, 19, 39, 11, 30, 33, 83, 7, 77]


//This bubblesort algoritihm sorts a numbered list

let bubbleSort = (arr) => {
let counter = 0

for (let i = 0; i <= sortArr.length; i++) {
if (sortArr[i] > sortArr[i + 1]) {
counter += 1
sortArr.splice(i, 0, sortArr[i + 1])
sortArr.splice(i + 2, 1)
}
}

if (counter > 1) {
bubbleSort(sortArr)
} else {
console.log(sortArr)
}

};

bubbleSort(sortArr);

最佳答案

它应该是 counter >= 1 而不是 counter > 1

因为对于像 3,5,3,3 这样的情况,交换一个元素使其成为 3,3,5,3 并且它将显示数组值而不是进行另一个递归调用。

但是,标准冒泡排序使用嵌套循环。如果所有内容都已排序(就像您对计数器变量所做的那样),可以打破外循环。

此外,使用旧的临时变量可以更快地完成交换元素。

temp = a;
a = b;
b = temp

或者很酷的,

a ^= b;
b ^= a;
a ^= b

关于javascript - 冒泡排序算法有一个错误,一些编号列表在 NodeJS 中不能正确排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56633718/

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