快速排序跟冒泡排序的比較

主要是對比排序中兩數(shù)比較的次數(shù):

let count = 0? // 記錄快速排序比較次數(shù)

let count1 = 0??// 記錄冒泡排序比較次數(shù)

// 快速排序,取兩個數(shù)組分別存放比原數(shù)組第一個元素大跟小的元素

function fastSort(array) {

let left = []

let right = []

for (let i = 1; i < array.length; i++) {

count++

if (array[i] > array[0]) right.push(array[i])

else left.push(array[i])

}

// 對兩個數(shù)組進行遞歸再次排序直到不需要再排序(空數(shù)組或者只有一個元素的數(shù)組)

left = sortArr(left)

right = sortArr(right)

// return這兩個數(shù)組以及原數(shù)組第一個元素

return [...left, ...[array[0]],...right]

}

// 數(shù)組長達大于1才進行排序否則return原數(shù)組

function sortArr(array) {

if (array.length>1)

return fastSort(array)

else return array

}

// 冒泡排序

function sortArr1(array) {

let temp

for (let i = 0; i < array.length; i++) {

for(let j = i+1;j<array.length;j++){

count1++

if(array[i]>array[j]){

temp = array[i]

array[i] = array[j]

array[j] = temp

}

}

}

return array

}

let arr = [20, 15, 14, 23, 5, 156, 245,12,63,25,25,366,98,54,33, 996, 332, 14, 52, 33, 25, 1, 45, 5, 22, 47]

let arr1 = sortArr(arr)

let arr2 = sortArr1(arr)

console.log(arr1)

console.log('快速排序比較次數(shù):'+count) // 110

console.log(arr2)

console.log('冒泡排序比較次數(shù):'+count1) //325

// [1, 5, 5, 12, 14, 14, 15, 20, 22, 23, 25, 25, 25, 33, 33, 45, 47, 52, 54, 63, 98, 156, 245, 332, 366, 996]


可見:冒泡排序比較次數(shù)是快速排序的接近三倍,也就是快速排序比較次數(shù)明顯少得多,而冒泡排序代碼實現(xiàn)以及理解相對簡單

?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
【社區(qū)內容提示】社區(qū)部分內容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內容

友情鏈接更多精彩內容