【发布时间】:2019-12-14 14:25:38
【问题描述】:
不使用通常的 do-while 循环进行排序,如果我们使用 2 个 for 循环,可以吗?
let bubbleSort = (arr) => {
console.log(arr);
for(let i=0; i<arr.length; i++) {
for (j=0; j<arr.length; j++) {
if (arr[j] > arr[j+1]){
console.log("swapped (i,j)->", arr[j],arr[j+1])
let temp = arr[j+1];
arr[j+1] = arr[j];
arr[j] = temp;
}
}
}
return arr
}
这会返回正确的排序数组,但它是否比 do-while 循环更好。两者都是 O(n^2) 时间复杂度。
【问题讨论】:
-
“arr[arr.length-1]”与“arr[arr.length]”比较时不会报错吗?
-
这个版本缺少冒泡排序的一个重要特性——在上次扫描没有交换时停止
-
您要求我们为您做作业吗?进行冒泡排序的唯一原因是学术理解,在生产应用程序中使用冒泡排序是违反直觉的。
-
@AdrianBrand 并非所有关于 SO 的代码问题都需要与生产代码有关。我们欢迎纯粹的学术和教育问题。作业是on-topic,但在这种情况下做出这样的假设似乎有些冒昧。
-
不,这不是为了学术目的,我是在自学冒泡排序并阅读了理论并尝试实施它,并希望对我做错的地方提供反馈。
标签: javascript sorting bubble-sort