JavaScript 冒泡排序修改(循环条件 "for" 不工作)

JavaScript bubble sort modification (condition of the loop "for" is not working)

循环 "i" 必须中断,当循环 "j" return swap = false 的 if 语句时,但它不会那样做,并继续执行所有 arr.length

bubble sort pen link

var arr = [0, 1, 2, 4, 3, 5, 6, 7, 8, 9, 10, 11, 12, 13];
var n = arr.length;
var t;
var swap;

for (var i = 0; (i < n) && (swap = true); i++) {
for (var j = 0; j < ( n - (i + 1) ); j++) {


    if ( arr[j] > arr[j + 1] ) {

        t = arr[j + 1];
        arr[j + 1] = arr[j];
        arr[j] = t;
        swap = true;

    } else { swap = false }
}
};

你可以使用休息时间;停止 for() 循环的语句 Have a look here

var arr = [0, 1, 2, 4, 3, 5, 6, 7, 8, 9, 10, 11, 12, 13];
var n = arr.length;
var t;
var swap = true;

for (var i = 0; i < n; i++) { 
 if (!swap) {
  break;
 }
 for (var j = 0; j < ( n - (i + 1) ); j++) {
  if ( arr[j] > arr[j + 1] ) {
   t = arr[j + 1];
   arr[j + 1] = arr[j];
   arr[j] = t;
  } else {
   swap = false;
  }
 }
};
alert(performance.now());
alert(arr);

这一行

for (var i = 0; (i < n) && (swap = true); i++) {

为交换分配一个值(即 swap = true),而您实际上想要检查它的值(即 swap === true)。

请注意,swap 最初是未定义的,因此如果您根据上述内容更改代码 (swap === true),您可能需要在进入循环之前明确将其设置为 true。

这一行

for (var i = 0; (i < n) && (swap = true); i++) {

为交换分配一个值(即 swap = true),而您实际上想要检查它的值(即 swap === true)。

请注意,swap 最初是未定义的,因此如果您根据上述内容更改代码(swap === true),您可能需要在进入循环之前明确将其设置为 true。