原理:
第一步:選擇中間元素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)); }
原理: 冒泡排序的基本思想是,對相鄰的元素進行兩兩比較,順序相反則進行交換,這樣,每一趟會將最小或最大的元素「浮」到頂端,最終達到徹底有序。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>
原理:將一組數據分紅兩組,分別將其稱爲有序組與待插入組。每次從待插入組中取出一個元素,與有序組的元素進行比較,並找到合適的位置,將該元素插到有序組當中。就這樣,每次插入一個元素,有序組增長,待插入組減小。直到待插入組元素個數爲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>