pengzhanbo
337字约1分钟
2022-04-24
提问
冒泡排序是指, 对相邻的元素进行两两比较,顺序相反则进行交换。 这样每次都会将最小或者最大的元素 "浮" 到顶端,最终达到完全有序。
冒泡排序的平均时间复杂度为 O(n²) ,最坏时间复杂度为 O(n²) ,空间复杂度为 O(1) ,是稳定排序。
优化后的冒泡排序,当排序序列为已排序序列时,为最好的时间复杂度为 O(n)。
function bubbleSort(arr) {
if (!Array.isArray(arr) || arr.length <= 1) return arr
let lastIndex = arr.length - 1
while (lastIndex > 0) {
let flag = true
const k = lastIndex
for (let j = 0; j < k; j++) {
if (arr[j] > arr[j + 1]) {
flag = false
lastIndex = j
;[arr[j], arr[j + 1]] = [arr[j + 1], arr[j]]
}
}
if (flag) break
}
return arr
}