JS中冒泡排序,選擇排序,快速排序
阿新 • • 發佈:2018-08-18
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));
// 選擇排序(通俗的說就是j 和i打,誰贏了誰去前面)
//快速排序: 取數組中間下標的值,再將其他值與該值相比,大於加入右數組,小於加入左數組,遞歸調用
JS中冒泡排序,選擇排序,快速排序