首页 > 解决方案 > java - 如何仅使用for循环、if语句和while循环在Javasctipt中对数组的升序进行排序?

问题描述

我想在下面提升这个数组。[1, 2,3,5, 3, 2, 4,] 到 [1,2,2,3,3,4,5]

但我下面的代码没有正确回答。有人可以教我如何使用 javascript 对数字数组进行排序吗?

    var arr = [1, 2,3,5, 3, 2, 4,];

for (var i = 0; i < arr.length - 1; i++){
    var left = arr[i];
    var right = arr[i + 1];
    if (left > right) {
        arr[i + 1] = left;
        arr[i] = right;
    } 

}
console.log(arr);

标签: javascriptarrayssortingfor-loopwhile-loop

解决方案


这是冒泡排序算法,仅使用for-loopwhile

const arr = [1, 2, 3, 5, 3, 2, 4];

let is_sorted = false;

while (!is_sorted) {
  is_sorted = true;
  for (let i = 1; i < arr.length; i++) {
    if (arr[i - 1] > arr[i]) {
      // swap
      const temp = arr[i - 1];
      arr[i - 1] = arr[i];
      arr[i] = temp;
      is_sorted = false;
    }
  }
}

console.log(arr);


推荐阅读