JS基础案例21-数组之冒泡排序

arr=[1,4,0,5,6,2,3]; // 进行排序。

  • 冒泡排序第一种方法,简单版

<script>
    var arr=[1,4,0,5,6,2,3]
    var w=0;//记录外循环的次数
    var n=0;//记录内循环的次数
   for(var i=0;i<arr.length-1;i++){
        for(var j=0;j<arr.length-1;j++){
            if(arr[j]>arr[j+1]){//如果前一项大于后一项,则让它们交换位置。
                var temp=arr[j];//先记录下来前一项的值。
                    arr[j]=arr[j+1];//让前一项的值等于后一项。
                    arr[j+1]=temp;//再让后一项的值等于前一项。大功告成。
            }
            n++
        }
        w++
   }
   console.log(arr)
   console.log(w)
   console.log(n)
</script>
  • 冒泡排序第二种方法,简单版的哥哥。

<script>
    var arr=[1,4,0,5,6,2,3]
    var w=0;//记录外循环的次数
    var n=0;//记录内循环的次数
   for(var i=0;i<arr.length-1;i++){
        for(var j=0;j<arr.length-1-i;j++){//比第一种方法多减个i,就是让其少比较次数。
            if(arr[j]>arr[j+1]){
                var temp=arr[j];
                    arr[j]=arr[j+1];
                    arr[j+1]=temp;
            }
            n++
        }
        w++
   }
   console.log(arr)
   console.log(w)
   console.log(n)
</script>
  • 冒泡排序第三种方法 最终版《开闭原则》

<script>
    var arr=[1,4,0,5,6,2,3]
    var w=0;//记录外循环的次数
    var n=0;//记录内循环的次数
    var bool=true;
   for(var i=0;i<arr.length-1;i++){
        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;
                    bool=false;//只要是进来,排序还没完成。
            }
            n++
        }
        if(bool){//只有bool等于true时。方可进来,只要进来就说明比较已经完成啦。
                break;
            }
        w++
   }
   console.log(arr)
   console.log(w)
   console.log(n)
</script>

感概万千,设计之巧妙。

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容