我可以在不使用排序函数的情况下仅使用一个循环对随机数组进行排序吗???但我可以用一个 for 循环做同样的事情吗?我怎样才能做到这一点 ? 这里我使用嵌套循环
$(document).ready(function () {
function sortarr(arr) {
for (var i = 0; i < arr.length; i++) {
for (var j = i + 1; j < arr.length; j++) {
if (arr[i] > arr[j]) {
var temp = arr[i];
arr[i] = arr[j];
arr[j] = temp;
}
}
}
return arr;
}
console.log(sortarr([10, 18, 4, 5, 9, 6, 16, 12]));
});
最佳答案
您可以只用一个循环进行归并排序:
function mergeSort(arr) {
if(arr.length < 2) return arr
const a = mergeSort(arr.slice(0, arr.length / 2)),
b = mergeSort(arr.slice(arr.length / 2));
const result = [];
while(a.length && b.length)
result.push((a[0] > b[0] ? a : b).shift());
return result.concat(a, b);
}
但正如上面的评论所述,这不会比具有多个循环的方法更快,可能更慢。
关于javascript - 仅使用一个没有排序功能的循环对随机数组进行排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50299503/