zoukankan      html  css  js  c++  java
  • 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(`
    -------第${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

  • 相关阅读:
    Warning: setState(...): Can only update a mounted or mounting component. This usually means you called setState() on an unmounted component. This is a no-op. Please check the code for the EditerInput
    React 综合事件 SyntheticEvent
    浏览器进程?线程?
    如何选择Redux的store和React的state?
    主流浏览器内核介绍(前端开发值得了解的浏览器内核历史)
    前端路由实现与 react-router 源码分析
    Sass Less SCSS 的抉择
    单行居中显示文字,多行居左显示,最多两行超过用省略号结尾
    link和@import的区别
    css选择符属性继承优先级算法以及css3新增伪类新特性
  • 原文地址:https://www.cnblogs.com/dshvv/p/5266188.html
Copyright © 2011-2022 走看看