代码:
<script>
var arr = [1, 4, 7, 3, 5, 6];
// 记录比较遍数
var bian = 0;
// 记录比较的次数
var ci = 0;
// 本来有6个数,需要比较5遍,即arr.length-1遍,这样从右往左由大到小依次排好了5个数,所以第5遍时确定了第5个数,第6个数就不用排了。
for (var i = 0; i < arr.length - 1; i++) {
// 可是有可能未满5遍就排好了序,因此做一个标记,判断它这一遍是否排好了序
var flag = true;
bian++;
// 每次两两比较,每遍比较了(6-1-i)次,即arr.length-1-i;
for (var j = 0; j < arr.length - 1 - i; j++) {
ci++;
// 当前一个数大于后一个数时,两数交换
if (arr[j] > arr[j + 1]) {
flag = false;
var t = arr[j];
arr[j] = arr[j + 1];
arr[j + 1] = t;
}
}
if (flag == true) {
// 当flag仍然等于true时,说明未进入内层for循环中的if语句,即已经排好了序
break;
}
}
// 打印比较遍数
console.log(bian);