zoukankan      html  css  js  c++  java
  • js数组冒泡排序,快速排序的原理以及实现

    冒泡排序:

        var arr = [49, 38, 65, 97, 76, 13, 27, 49];
        console.log('arr:' + arr);    //打印排序前的数组
        Bubblesort(arr);
        console.log('sortArr:' + arr);    //打印排序后的数组
     
        function Bubblesort(arr){
            for(i=0;i<arr.length-1;i++){    //排序趟数 注意是小于
                for(j=0;j<arr.length-i-1;j++){
                //一趟确认一个数,数组长度减当前趟数就是剩下未确认的数需要比较的次数
                //因为j从0开始,所以还要再减1,或者理解为arr.length-(i+1)
                    if(arr[j]>arr[j+1]){
                        var temp=arr[j];
                        arr[j]=arr[j+1];
                        arr[j+1]=temp;
                    }
                }
                console.log('newArr:' + arr); 
            }
        }

    加入flag,没有进行过交换,则不再进行多余地排序。 

        var arr = [49, 38, 65, 97, 76, 13, 27, 49];
        console.log('arr:' + arr);
        Bubblesort(arr);
        console.log('sortArr:' + arr);
     
        function Bubblesort(arr){
            var flag=1;    //flag用来标记某一趟排序是否发生交换
            for(i=0;i<arr.length-1;i++){
                flag=0;    //flag置为0,如果本趟排序没有发生交换,这不会执行下一趟排序
                for(j=0;j<arr.length-i-1;j++){
                    if(arr[j]>arr[j+1]){
                        var temp=arr[j];
                        arr[j]=arr[j+1];
                        arr[j+1]=temp;
                        flag=1;    //flag置为1,表示本趟排序发生了交换
                    }
                }
                console.log('newArr:' + arr); 
                if(flag==0)  break;
            }
        }

  • 相关阅读:
    C++常用工具收集
    Ubuntu禁用触摸板
    Vim简本
    JS原型链模式和继承模式
    JS原型链模式
    JS中的单例模式/工厂模式/构造函数模式(并非完全意义上的设计模式)
    JS中一道关于this和闭包的题
    JS中的this关键字
    JS闭包
    JS作用域和作用域链
  • 原文地址:https://www.cnblogs.com/xiaoqi2018/p/10446409.html
Copyright © 2011-2022 走看看