我一直在尝试自己用函数制作 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/