冒泡排序算法思想:将数组中的数组按照从大到小的顺序依次“沉到”后边。第一次,最大值沉底;第二次,次大值沉底……
<!DOCTYPE html>
<html>
<head>
<title>冒泡排序-JS代码实现</title>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
</head>
<body οnlοad="init()">
<script>
function init(){
function bubbleSort(array){
var i, j, n, temp, flag;
n = array.length;
for(i=n-1; i>0; i--){
flag = 0;
for(j=1; j<=i; j++){
if(array[j] < array[j-1]){
temp = array[j];
array[j] = array[j-1];
array[j-1] = temp;
flag=1;
}
document.write(array + "<br/>")
}
if(flag==0){
break;
}
document.write("<br/>");
}
}
var arrayA = [1 , 5, 2, 6, 4, 3];
bubbleSort(arrayA);
}
</script>
</body>
</html>
请对比下面的算法思考一下差别:
function bubbleSort(array){
var i, j , temp, pos, n=array.length;
for(i=n-1;i>0;i--){
temp=array[0];
pos=0;
for(j=1;j<=i;j++){
if(array[j]>temp){
temp=array[j];
pos=j;
}
}
array[pos]= array[i];
array[i]=temp;
document.write(array + "<br/>");
}
}
仔细研读,可知,第一种算法是每比较一次,较大值都会被放到较小值后边,这样在大值沉底的同时也对数组进行了局部排序,较之第二种算法,是每进行一次循环,只对此趟排序中的最大值和最大值应在位置的值进行替换。总之,第一种算法排序效率较高。