1. 程式人生 > >JS中冒泡排序,選擇排序,快速排序

JS中冒泡排序,選擇排序,快速排序

nbsp quic 獲取 length 中間 ret dex bsp 遞歸

var arr = [1,4,2,9,7,6,5,4,7,5]; // 冒泡排序(通俗的說就是j 和 j+1打,誰贏了誰去後面) for(var i = 1;i<arr.length;i++){ for(var j = 0;j<arr.length - i;j++){ if(arr[j]>arr[j+1]){ var temp = arr[j]; arr[j] = arr[j+1]; arr[j+1] = temp; } } } console.log(arr);

// 選擇排序(通俗的說就是j 和i打,誰贏了誰去前面)
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[j]; arr[j] = arr[i]; arr[i] = temp; } } } console.log(arr);


//速排序: 取數組中間下標的值,再將其他值與該值相比,大於加入右數組,小於加入左數組,遞歸調用
function quick(arr){ // 遞歸出口條件 if(arr.length<=1){return arr;} // 獲取中間下標 var centerindex = arr.length%2==0?arr.length/2:(arr.length+1)/2; // 獲取中間下標對應的值 var centerElement = arr[centerindex]; // 創建左右數組 var left = []; var right = []; // 循環判斷,若元素大於中間下表對應的值則加入左數組,反之加入右數組
for(var i = 0;i<arr.length;i++){ if((i!=centerindex)&&(arr[i]>=centerElement)){ right.push(arr[i]); } if((i!=centerindex)&&(arr[i]<centerElement)){ left.push(arr[i]); } } //遞歸調用該函數 return quick(left).concat(centerElement).concat(quick(right)); } console.log(quick(arr));

JS中冒泡排序,選擇排序,快速排序