我用JS做了一个冒泡排序算法(sorta)。它有时会起作用,但问题是它只对数组迭代一次。下面是我的代码:
function bubble(arr) {
for (var i = 0; i < arr.length; i++) {
if (arr[i] > arr[i + 1]) {
var a = arr[i]
var b = arr[i + 1]
arr[i] = b
arr[i + 1] = a
}
}
return arr;
}发布于 2016-06-15 00:40:45
请看下面的顺序:
[5, 4, 3, 2, 1]现在,假设您需要使用冒泡排序按升序对其进行排序。
因此,您迭代数组并交换其他排序的相邻元素。
以下是迭代完成后您将获得的结果
[4, 3, 2, 1, 5]现在,如果你再次这样做,你会得到这样的结果:
[3, 2, 1, 4, 5]同样,您需要重复足够多次的迭代才能将其完全排序。这意味着你需要2个嵌套的循环。内循环用于迭代数组,外循环用于重复迭代。
请参阅this文章的分步示例。
发布于 2016-06-15 00:27:37
您需要一个内部循环来正确完成排序:
function bubble(arr) {
var len = arr.length;
for (var i = 0; i < len ; i++) {
for(var j = 0 ; j < len - i - 1; j++){ // this was missing
if (arr[j] > arr[j + 1]) {
// swap
var temp = arr[j];
arr[j] = arr[j+1];
arr[j + 1] = temp;
}
}
}
return arr;
}
document.write(bubble([1,9,2,3,7,6,4,5,5]));
发布于 2018-08-18 20:49:52
var array = [6,2,3,7,5,4,1];
function bubbleSort(arr) {
for(let j=0;j<arr.length;j++) {
for(let i = 0; i < arr.length; i++) {
if(arr[i]>arr[i+1]) {
var temp = arr[i];
arr[i] = arr[i+1];
arr[i+1] = temp;
}
}
}
return arr;
}
console.log(bubbleSort(array));https://stackoverflow.com/questions/37817334
复制相似问题