使用For循环对包含数字的数组进行排序

Rj-*_*j-s -2 javascript arrays sorting

我是Javascript的新手,我有一个包含数字的数组.

 var arr = [2,4,8,1,5,9,3,7,6];
Run Code Online (Sandbox Code Playgroud)

我如何在javascript中使用原生For循环对其进行排序.我知道排序功能可用,但我希望它通过循环.

输出应该是 -

 var res = [1,2,3,4,5,6,7,8,9];
Run Code Online (Sandbox Code Playgroud)

小智 7

var Arr = [1, 7, 2, 8, 3, 4, 5, 0, 9];

for (var i = 1; i < Arr.length; i++)
    for (var j = 0; j < i; j++)
        if (Arr[i] < Arr[j]) {
          var x = Arr[i];
          Arr[i] = Arr[j];
          Arr[j] = x;
        }

console.log(Arr);
Run Code Online (Sandbox Code Playgroud)

  • 这个***无法解释的***答案[赢得](https://stackoverflow.com/help/badges/8842/lifeboat?page=1) OP *救生艇*徽章。它是什么?[冒泡排序](https://en.wikipedia.org/wiki/Bubble_sort)?想法/要点是什么?来自[帮助中心](https://stackoverflow.com/help/promotion):*“...始终解释为什么您提出的解决方案是合适的以及它是如何工作的”*。请通过[编辑(更改)您的答案](https://stackoverflow.com/posts/38331533/edit)进行回复,而不是在评论中回复(* ***没有*** *“编辑:”,“更新:” ,或类似的 - 答案应该看起来就像今天写的一样)。 (3认同)

小智 3

我会做这样的事情......

var input = [2,3,8,1,4,5,9,7,6];

var output = [];
var inserted;

for (var i = 0, ii = input.length ; i < ii ; i++){
  inserted = false;
  for (var j = 0, jj = output.length ; j < jj ; j++){
    if (input[i] < output[j]){
      inserted = true;
      output.splice(j, 0, input[i]);
      break;
    }
  }

  if (!inserted)
    output.push(input[i])
}

console.log(output);
Run Code Online (Sandbox Code Playgroud)

也许有更有效的方法,但如果你想使用for循环,这是我的第一个想法......