冒泡排序算法的原理如下:
-
比较相邻的元素。如果第一个比第二个大,就交换他们两个。
-
对每一对相邻元素做同样的工作,从开始第一对到结尾的最后一对。在这一点,最后的元素应该会是最大的数。
-
针对所有的元素重复以上的步骤,除了最后一个。
-
持续每次对越来越少的元素重复上面的步骤,直到没有任何一对数字需要比较。
请参考下面的代码:
<script type="text/javascript">
var arr1 = [11,4,79,13,58,44,33,90];
console.log(arr1)
console.log("排序后",bubblesort(arr1))
//优化:
function bubblesort(arr){
var exchange = false; //是否交换的状态
var exchangeCount = 0; //统计交换的次数
for(var j=0;j<arr.length-1;j++){
for(var i=0;i<arr.length-j-1;i++){
if(arr[i] > arr[i+1]){
exchange = true;
var temp = arr[i];
arr[i] = arr[i+1];
arr[i+1] = temp;
}
}
if(!exchange){
break;
}
else{
exchangeCount++;
console.log("交换了"); // 改变几次打印几次
}
}
console.log(exchangeCount)
return arr;
}
</script>