javascript - 仅使用一个没有排序功能的循环对随机数组进行排序

标签 javascript

我可以在不使用排序函数的情况下仅使用一个循环对随机数组进行排序吗???但我可以用一个 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/

相关文章:

javascript - Sequelize连接错误: self signed certificate

javascript - 如何根据 url 将类添加到正文

javascript - Java UUID.nameUUIDFromBytes 要用 JavaScript 编写?

javascript - jquery 中的变量在没有 var 的情况下定义时给出 Uncaught ReferenceError

javascript - 使用 CheckBox 启用 CheckBoxList? - ASP.NET

JavaScript递归函数控制台记录正确答案但返回未定义

javascript - 如果数据由ajax填充,如何隐藏下拉列表

javascript - Silverstripe 要求组合文件 CSS 和 JS

javascript - ui-router 嵌套 View 无法解析状态

javascript - JSON基本错误