冒泡排序:
----------------------------------------------------------
思路:
1、拿数组内的第一个元素跟后一个元素比较,如果大于后一个元素然后交换位置 一致到最后 一轮下来 最大值一定到最右边 【这一轮不是最终的结果 需要好几轮才可以】 2、【一轮 比较好几次 需要好几轮】一轮最多比较多少次 length - 1 次,最多length -1 轮 ------------需要用到嵌套循环 3、需要循环嵌套 4、外面控制几轮,里面控制每一轮多少次。 第一轮的比较:
for (var i = 0; i < arr1.length - 1; i++) {
if (arr1[i] > arr1[i + 1]) {
var tmp = arr1[i];
arr1[i] = arr1[i + 1];
arr1[i + 1] = tmp;
}
}
document.write('一轮以后:', arr1,'<br />');
i = 0 趟 length - 1次 少 0 次
i = 1 length - 1 -1 少1 次
i = 2 length - 1 -1 -1 少2次
i = 3 length - 1 -1 -1 -1 少3次
完整冒泡排序:
for (var i = 0; i < arr1.length - 1; i++) {
for (var j = 0; j < arr1.length - 1 - i; j++) {
if (arr1[j] > arr1[j + 1]) {
var tmp = arr1[j];
arr1[j] = arr1[j + 1];
arr1[j + 1] = tmp;
}
}
document.write(i+'轮以后:', arr1,'<br />');
}
document.write('最后:', arr1);
图解:
// 双层for循环 一层少一次
// 里层减外层 变量想交换