JavaScript实现冒泡排序

时间:2024-05-21 19:33:32

思想:从第一个元素开始,对数组中两两相邻的元素比较,将值较小的元素放在前面,值较大的元素放在后面,一轮比较完毕,一个最大的数沉底成为数组中的最后一个元素,一些较小的数如同气泡一样上浮一个位置。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]+"&nbsp;");
}