arr=[1,4,0,5,6,2,3]; // 进行排序。
-
冒泡排序第一种方法,简单版
<script>
var arr=[1,4,0,5,6,2,3]
var w=0;//记录外循环的次数
var n=0;//记录内循环的次数
for(var i=0;i<arr.length-1;i++){
for(var j=0;j<arr.length-1;j++){
if(arr[j]>arr[j+1]){//如果前一项大于后一项,则让它们交换位置。
var temp=arr[j];//先记录下来前一项的值。
arr[j]=arr[j+1];//让前一项的值等于后一项。
arr[j+1]=temp;//再让后一项的值等于前一项。大功告成。
}
n++
}
w++
}
console.log(arr)
console.log(w)
console.log(n)
</script>
-
冒泡排序第二种方法,简单版的哥哥。
<script>
var arr=[1,4,0,5,6,2,3]
var w=0;//记录外循环的次数
var n=0;//记录内循环的次数
for(var i=0;i<arr.length-1;i++){
for(var j=0;j<arr.length-1-i;j++){//比第一种方法多减个i,就是让其少比较次数。
if(arr[j]>arr[j+1]){
var temp=arr[j];
arr[j]=arr[j+1];
arr[j+1]=temp;
}
n++
}
w++
}
console.log(arr)
console.log(w)
console.log(n)
</script>
-
冒泡排序第三种方法 最终版《开闭原则》
<script>
var arr=[1,4,0,5,6,2,3]
var w=0;//记录外循环的次数
var n=0;//记录内循环的次数
var bool=true;
for(var i=0;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];
arr[j]=arr[j+1];
arr[j+1]=temp;
bool=false;//只要是进来,排序还没完成。
}
n++
}
if(bool){//只有bool等于true时。方可进来,只要进来就说明比较已经完成啦。
break;
}
w++
}
console.log(arr)
console.log(w)
console.log(n)
</script>
感概万千,设计之巧妙。