一、冒泡排序數組
//第一種 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; }