标签:比较 它的 循环 class else i++ 结束 冒泡 就会
1.冒泡排序法
<script>
var arr = [3, 5, 1, 8, 2, 9, 4];
//i控制的是循环多少趟
for (var i = 0; i < arr.length - 1; i++) {
//假设当前的数据是已经排好序的
var flag = true;
//j控制的是每一次的比较,j和j+1比较,说明,j取到arr.length-1就可以了
//外循环i每执行一次,就会有i个值排好序,所以每一次比较的次数就为arr.length-1-i
for (var j = 0; j < arr.length -1 - i; j++) {
//如果前一项比后一项大,两两交换位置
if (arr[j] > arr[j + 1]) {
var temp = arr[j + 1];
arr[j + 1] = arr[j];
arr[j] = temp;
//如果发生交换位置,说明没有排好序
flag = false;
}
}
//每一次比完看flag的值,如果是true,说明已经排好序,结束循环
if(flag){
break;
}
}
console.log(arr);
</script>
2.插入排序法
<script>
var arr = [3, 5, 1, 8, 2, 9, 4];
//插入排序法
for (var i = 1; i < arr.length; i++) {
//从第二个数开始
var temp = arr[i];
//j表示从temp的前一个数开始,依次减减去比较
for (var j = i-1; j >= 0; j--) {
//如果当前值比它的前一项小
if(temp < arr[j]){
//将前一项的位置往后移动一位
arr[j+1] = arr[j];
}
else{
//如果不满足,结束循环
break;
}
}
//当内部循环结束的时候,给temp插到对应的值
arr[j+1] = temp;
}
console.log(arr);
标签:比较 它的 循环 class else i++ 结束 冒泡 就会
原文地址:https://www.cnblogs.com/z-lin/p/10946925.html