js 中的 一些简单算法(二)之 双层循环—冒泡排序

1、打印9*9乘法表

思路:脑补一下乘法表的格式,9*9就是有9列、9行组成。行和列都需要由循环控制。

document.write(""); //最外面放一个大框
for(var i = 1; i <= 9; i++){   //控制行循环
	document.write("");
		for(var j = 1; j <= i; j++){   //控制列循环
			document.write("");
		}
	document.write("");
}
document.write("
"); document.write(i + "*" + j + "=" + i * j); document.write("
");
2、打印正方形(10 * 10).

思路:类似的正方形也是10行和10列组成

for(var i = 1; i <= 10; i++){  //外层循环控制行
	for(var j = 1; j <= 10; j++){ //内层循环控制列
		document.write("☻");
	}
	document.write("
"); }
3、打印直角三角形。

思路:类似的直角三角形也是由行和列组成,只不过有一个条件,就是下一行始终比上一行多一列。

for(var i = 1; i <= 10; i++){  //外层循环控制行
	for(var j = 1; j <= i; j++){ //内层循环控制列
		document.write("☻");
	}
	document.write("
"); }

小结:注意每进行一次外层循环,内层循环要彻底循环完毕,才会进入下一次外层循环。


4、冒泡排序。

给出一组数,让进行从小到大排列。

思路:牵扯到数组中里的每个数都要进行两两比较大小。

var array = [65, 97, 76, 13, 27, 49, 58];
for (var i = 1; i < array.length; i++) {  //外层循环控制趟数
    var isSort = true;
    for (var j = 0; j < array.length - 1; j++) {  //内层循环控制两两比较大小的次数
        if (array[j] > array[j + 1]) {
            var tmp = array[j];
            array[j] = array[j + 1];
            array[j + 1] = tmp;
            isSort = false;
        }
    }
    if (isSort) {
        break;
    }
}
console.log(array);
趟数:数组中,每一个数都要和除自己外的其他数进行比较。每个数和其他数全都比较完了称为一趟。

         内层循环控制的是保证每个数都会和其他数进行比较并排列位置。














你可能感兴趣的:(算法)