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;
        }
    }

 

posted on 2019-02-27 20:10  一只傻阿贝哟  阅读(135)  评论(0编辑  收藏  举报

导航