思想:从第一个元素开始,对数组中两两相邻的元素比较,将值较小的元素放在前面,值较大的元素放在后面,一轮比较完毕,一个最大的数沉底成为数组中的最后一个元素,一些较小的数如同气泡一样上浮一个位置。n个数,经过n-1轮比较后完成排序。
var arr=[5,0,-56,900,12];
var flag=false;//标志位,用于控制程序比较次数,如果已有序,则此标志可以减少比较次数
for(var i=0;i<arr.length-1;i++){//大的排序次数(arr.length-1)
document.writeln("循环<br/>");//用于查看比较次数
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;
flag=true;//交换过
}
}
if(flag){
flag=false;
}else{
break;//已是有序,退出
}
}
//遍历输出排序后的数组
for(var i=0;i<arr.length;i++){
document.writeln(arr[i]+" ");
}