js--冒泡排序[由小到大]

 

 

冒泡流程写法  (小的往左冒)

<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8">
    <meta name="viewport" content="initial-scale=1.0, maximum-scale=1.0, user-scalable=no" />
    <title>hello world</title>
</head>
<body>
<script>
    let arr=[8,7,9,1,3];
    let temp;
    for(let i=0; i<arr.length-1; i++){
        console.warn(`\n-------第${i+1}趟:目的是取出数组中第${i+1}个最小的数------`)
        for (let j=i+1; j<arr.length; j++) {
            let result=arr[i]>arr[j];
            console.log(`第${j-i}次比较:拿数组第1个元素${arr[i]}比较数组第${j}个元素${arr[j]},结果${result?'是大于!':'本身就是是小于!'}${result?'把小的数'+arr[j]+'置前':'暂且暂且不动'}`)
            if(result){
                temp=arr[i];
                arr[i]=arr[j];
                arr[j]=temp;
            }
            console.log(arr)
        }
        console.log(`说明:经过第${i+1}趟比较,已经选出了第${i+1}小的数,是${arr[i]}`)
    }
    console.log('最后一个不用循环了,肯定是最大的了')
</script>
</body>
</html>
View Code

 

 

 

 

还有另一种冒泡排序(大的往右冒)

<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8">
    <meta name="viewport" content="initial-scale=1.0, maximum-scale=1.0, user-scalable=no" />
    <title>hello world</title>
</head>
<body>
<script>
    function sortAry(ary){
        for(let i=0;i<ary.length-1;i++){
            console.warn(`--第${i+1}趟:目的是取出数组中第${i+1}个最大的数--`)
            for(let j=0;j<ary.length-1-i;j++){
                let result=ary[j]>ary[j+1]
                console.log(`第${j+1}次比较:拿数组第${j}个元素(${ary[j]})与${j+1}个元素(${ary[j+1]})做比较,${result?'是大于,调换两者位置':'保持不动'}`);

                if(result){
                    let temp=ary[j];
                    ary[j]=ary[j+1];
                    ary[j+1]=temp;
                }
                console.log(ary)
            }
            console.log(`说明:经过第${i+1}趟比较,已经选出了第${i+1}大的数,是${ary[ary.length-1-i]}`)
        }
        console.log('最后一个不用循环了,肯定是最小的了')

    }
    let arr=[8,7,9,1,3];
    sortAry(arr)
</script>
</body>
</html>
View Code

 

 

var a=[6,2,4,1,5,9],t;
for(var i=0;i<a.length;i++){
  for(var j=0;j<a.length-1;j++){
     if(a[j]>a[j+1]){
        t=a[j];
        a[j]=a[j+1];
        a[j+1]=t; 
     }
   }
}
console.log(a)

 

这两种都是冒泡啦 

 

 

 

 

 

 

 

 

 

当然,如果是数组排序的话,还有js内置的sort方法

<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8">
    <meta name="viewport" content="initial-scale=1.0, maximum-scale=1.0, user-scalable=no" />
    <title>hello world</title>
</head>
<body>
    <script type="text/javascript">
    function sortNumber1(a, b){return a - b}
    function sortNumber2(a, b){return b - a}
    
    
    var arr = [10,5,40,25,100,1];
    document.write(arr.sort()+'<br/>')//默认
    document.write(arr.sort(sortNumber1)+'<br/>')//从小到大
    document.write(arr.sort(sortNumber2))//从大到小
    </script>
</body>
</html>
View Code

 

 

 

 

出自w3c

 

posted @ 2016-03-11 16:21  丁少华  阅读(779)  评论(0编辑  收藏  举报