JavaScript冒泡排序修改(循环的条件"对于"不起作用)

时间:2017-07-02 19:16:59

标签: javascript sorting bubble-sort

循环"我"必须打破,当if语句循环" j"返回swap = false,但它没有这样做,并继续完成所有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 }
}
};

3 个答案:

答案 0 :(得分:0)

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

&#13;
&#13;
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);
&#13;
&#13;
&#13;

答案 1 :(得分:0)

这一行

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

为swap指定一个值(即swap = true),而你实际上想要检查它的值(.i.e。swap === true)。

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

答案 2 :(得分:0)

correct answer by duncan smith

这一行

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

为swap指定一个值(即swap = true),而你实际上想检查它的值(.i.e.swap === true)。

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