js冒泡、快排的簡單寫法

DianaHan發表於2018-12-11

自寫的比較簡單通俗的冒泡和快速排序的js程式碼

// 氣泡排序
let testArr = [85, 24, 63, 45, 17, 31, 96, 50];
let testResult = bubbleSort(testArr);
console.log("testResult : ", testResult);

function bubbleSort(arr) {
    arr.forEach((element, index) => {
        for(let i=index+1; i<arr.length; i++) { // 和以後的每個元素進行比較
            if (arr[index] > arr[i]) {
                [arr[index], arr[i]] = [arr[i], arr[index]];
            }
        }
    });
    return arr;
}
複製程式碼
// 快速排序
let quickSort = function(arr) {
    if (arr.length <= 1) {
        return arr;
    };
    let mid = arr[Math.round(arr.length/2) - 1];
    let arrLeft = [];
    let arrRight = [];
    for (let i=0; i<arr.length; i++) {
    	if (arr[i] < mid) {
            arrLeft.push(arr[i]);
    	};
    	if (arr[i] > mid) {
            arrRight.push(arr[i]);
        };
    };
    console.log(quickSort(arrLeft).concat([mid], quickSort(arrRight)));
    // 必須有return,不然會報錯,查了一下好像說是遞迴函式的問題
    return quickSort(arrLeft).concat([mid], quickSort(arrRight));
};

let testArr = [85, 24, 63, 45, 17, 31, 96, 50];
let testResult = quickSort(testArr);
console.log("testResult", testResult);複製程式碼

相關文章