js數組冒泡排序、快速排序、插入排序

一、冒泡排序數組

     //第一種
     function bubblesort(ary){
        for(var i=0;i<ary.length-1;i++){
            for(var j=0;j<ary.length-1-i;j++){
                if(ary[j] > ary[j+1]) {//若是前面的數據比後面的大就交換
                    var items = ary[j];
                    ary[j] = ary[j+1];
                    ary[j+1] = items;
                }
            }
        }
        return ary;
    }
    var ary=[2,5,4,1,6,3];
    console.log(bubblesort(ary));
    //第二種
    var bubbleSort=function(arr){
        for(var i=0;i<arr.length-1;i++){
            for(var j=i+1;j<arr.length;j++){
                if(arr[i]>arr[j]){//若是前面的數據比後面的大就交換
                    var temp=arr[i];
                    arr[i]=arr[j];
                    arr[j]=temp;
                }
            }
        }
        return arr;
    }
    var arr=[2,5,4,1,6,3];
    console.log(bubbleSort(arr));

二、快速排序ui

// 數組快速排序的原理 : 獲取數組的中間項,而後對數組進行循環,判斷數組每一項和這個中間項進行比較,比中間項小的放在左邊數組,比中間項大的放進右邊的數組;而後經過遞歸對左邊數組右邊數組進行一樣的處理,最後把每個數組和中間項拼接在一塊兒;
    function quickSort(ary) {
        // 當數組長度爲一時,不須要再遞歸
        if(ary.length<=1){
            return ary;
        }
        // 計算中間項的索引,偶數項取中間兩項後面一項,奇數項取中間項
        var index = Math.floor(ary.length/2);
        // splice  : 返回值是一個數組,通姑索引獲取中間項
        var middle = ary.splice(index,1)[0];
        var  left = [];
        var  right = [];
        for(var i=0;i<ary.length;i++){
            var cur = ary[i];
            if(cur<middle){
                left.push(cur);
            }else{
                right.push(cur);
            }
        }
        return quickSort(left).concat(middle,quickSort(right));
    }

三、插入排序spa

function insertSort(ary){
        var newAry= [];
        newAry.push(ary[0]);
        for(var i=1;i<ary.length;i++){
            var cur = ary[i];
            for(var j=newAry.length-1;j>=0;){
                if(cur<newAry[j]){
                    j--;
                    if(j===-1){
                        newAry.unshift(cur);
                    }
                }else{
                    newAry.splice(j+1,0,cur);
                    break;
                }
            }
        };
        return newAry;
    }
相關文章
相關標籤/搜索