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

主要是对比排序中两数比较的次数:

let count = 0  // 记录快速排序比较次数

let count1 = 0  // 记录冒泡排序比较次数

// 快速排序,取两个数组分别存放比原数组第一个元素大跟小的元素

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])

}

// 对两个数组进行递归再次排序直到不需要再排序(空数组或者只有一个元素的数组)

left = sortArr(left)

right = sortArr(right)

// return这两个数组以及原数组第一个元素

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

}

// 数组长达大于1才进行排序否则return原数组

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('快速排序比较次数:'+count) // 110

console.log(arr2)

console.log('冒泡排序比较次数:'+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]


可见:冒泡排序比较次数是快速排序的接近三倍,也就是快速排序比较次数明显少得多,而冒泡排序代码实现以及理解相对简单

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容