javascript - 如何检查数组中是否交换了所有数字?

标签 javascript

我一直在尝试自己用函数制作 sort() 方法。

function arrange(arr) {
                var arrangedList = [];
                for (var i = 0; i < arr.length; i++) {
                                if (arr[i] > arr[i + 1]) {
                                                var tmp = arr[i + 1];
                                                arr[i + 1] = arr[i]
                                                arr[i] = tmp;
                                }
                                arrangedList.push(arr[i]);
                }
                return arrangedList;
}

它按我的意愿交换位置,但问题是它只交换一次。 如果我用 [7,1,6,2] 调用该函数,它将像这样工作:

[1,7,6,2]
[1,6,7,2]
[1,6,2,7]
  • 到这里就停止了。它不会再次检查 6 是否大于 2 然后交换。 我该如何解决?

你可以看到我的 fiddle here .

最佳答案

这是来自 link 的代码我在评论中提到了。它实现了冒泡排序:

var a = [34, 203, 3, 746, 200, 984, 198, 764, 9];

function bubbleSort(a)
{
    var swapped;
    do {
        swapped = false;
        for (var i=0; i < a.length-1; i++) {
            if (a[i] > a[i+1]) {
                var temp = a[i];
                a[i] = a[i+1];
                a[i+1] = temp;
                swapped = true;
            }
        }
    } while (swapped);
}

bubbleSort(a);
console.log(a);         //[3, 9, 34, 198, 200, 203, 746, 764, 984]

关于javascript - 如何检查数组中是否交换了所有数字?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32123313/

相关文章:

javascript - 如何从后台页面中的JS变量所在文件夹中的文件中获取数据?

javascript - 使用正则表达式删除 JavaScript 中的 sum()

javascript - 我不太擅长编码,并且我的 Hangman 游戏遇到一些问题

javascript - 使用 ...rest ES6 以奇怪的顺序放置参数

javascript - 文本字段在第二次提交时返回 null Angular 5

javascript - 获取 HTML 选择

javascript - 使用 RequireJS 加载时未定义 React

javascript - 协助Js对象构造函数

javascript - JSON .each 上的调用堆栈溢出

javascript - 如何在jsfiddle中添加本地json文件?