js實現優化快速排序、冒泡排序和插入排序

1. 快速排序

原理:
第一步:選擇中間元素mid做爲基準。單獨拿出來放到新數組,原來數組中去掉這個元素。第一步:選擇中間元素mid做爲基準。單獨拿出來放到新數組,原來數組中去掉這個元素。
第二步:按照數組的順序,將每一個元素和這個mid比較,全部比它小的都放到左邊新空數組left中,全部比它大的放到右邊right中。
第三步:對左右兩個數組,分別作第一步和第二步的比較,直到只剩下一個元素爲止。最後作數組拼接。數組

代碼實現以下:ui

var  ary=[6,3,9,5,23,66,8];
 
function quickSort(ary) {
    if(ary.length<=1){
        return ary;      //這個條件必定要放在前面
    }
    var midIndex=Math.floor(ary.length/2);
    var midItem=ary.splice(midIndex,1)[0];//splice獲取的是刪除的那項組成的新數組
    var left=[];
    var right=[];

for(var i=0;i<ary.length;i++){
     var cur=ary[i];
     if(cur<=midItem){
         left.push(cur);
     }else{
         right.push(cur);
     }
}
   return quickSort(left).concat(midItem,quickSort(right));
}

2.冒泡排序

原理: 冒泡排序的基本思想是,對相鄰的元素進行兩兩比較,順序相反則進行交換,這樣,每一趟會將最小或最大的元素「浮」到頂端,最終達到徹底有序。code

<script>
    var  ary=[6,3,9,5,23,66,8];

     function bubbleSort(ary) {
         var flag=true;
         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 temp=ary[j];
                          ary[j]=ary[j+1];
                           ary[j+1]=temp;
                        flag=false;
                    }
             }
             if(flag){
                 return ary;
             }
         }
         return ary;
     }
    console.log(bubbleSort(ary));
</script>

3.插入排序

原理:將一組數據分紅兩組,分別將其稱爲有序組與待插入組。每次從待插入組中取出一個元素,與有序組的元素進行比較,並找到合適的位置,將該元素插到有序組當中。就這樣,每次插入一個元素,有序組增長,待插入組減小。直到待插入組元素個數爲0。注意,插入過程當中涉及到了元素的移動。排序

<script>
       function chaRuSort(ary) {
            var newAry=[];
            newAry.push(ary.shift());//newAry.push(arr[0]);

            for(var i=0;i<ary.length;i++){
                  var cur=ary[i];
               for(var j=0;j<newAry.length;j++){
                   if(cur<newAry[j]){
                        newAry.splice(j,0,cur);
                        break;
                   }else{
                       if(j===newAry.length-1){
                           newAry.push(cur);
                         break;
                       }
                   }
               }
            }
            return newAry;
      }

       var ary=[2,6,9,23,10,22,8];
       var res=chaRuSort(ary);
       console.log(res);
</script>
相關文章
相關標籤/搜索