簡述
冒泡排序是交換排序的一種,是一種穩(wěn)定的敬鬓,性能不突出的排序算法。
時間復(fù)雜度:O(n2)[平均情況绞灼,最壞情況],O(n)[最好情況]
空間復(fù)雜度:O(1)
代碼
const arr = [2, 5, 3, 8, 1, 7, 4, 9, 6, 0];
const len = arr.length;
const bubbling = () => {
let change = null;
for (let i = 0; i < len; i++) {
change = null;
for (let j = i; j < len; j++) {
if (arr[i] > arr[j]) {
change = arr[i];
arr[i] = arr[j];
arr[j] = change
}
}
}
console.log(arr);
}
bubbling();
每一趟都會確定一個數(shù)字的位置
// arr
[ 2, 5, 3, 8, 1, 7, 4, 9, 6, 0 ]
// 第1次排序
[ 0, 5, 3, 8, 2, 7, 4, 9, 6, 1 ]
// 第2次排序
[ 0, 1, 5, 8, 3, 7, 4, 9, 6, 2 ]
// 第3次排序
[ 0, 1, 2, 8, 5, 7, 4, 9, 6, 3 ]
// 第4次排序
[ 0, 1, 2, 3, 8, 7, 5, 9, 6, 4 ]
// 第5次排序
[ 0, 1, 2, 3, 4, 8, 7, 9, 6, 5 ]
// 第6次排序
[ 0, 1, 2, 3, 4, 5, 8, 9, 7, 6 ]
// 第7次排序
[ 0, 1, 2, 3, 4, 5, 6, 9, 8, 7 ]
// 第8次排序
[ 0, 1, 2, 3, 4, 5, 6, 7, 9, 8 ]
// 第9次排序
[ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 ]
// 第10次排序
[ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 ]