用Javascript实现冒泡排序
- 无优化实现
原理:设数组的长度为n,遍历n次,每次从最后一个元素一一与前一元素对比,若小于前一元素则交换位置。
function BubbleSort(array) { // 无优化
for (let i = 0; i < array.length; i++) {
for (let j = array.length - 1; j > i; j--) {
if (array[j] < array[j - 1]) {
swap(array, j, j - 1)
}
}
}
}
- 优化实现
原理:在无优化算法基础上,由于在第一层n次遍历中可能没有到第n次遍历前,数组已经有序,所以即可停止算法退出。所以引入有无修改标志,在内层循环中若无对数组进行修改,即数组已经有序,则退出。
function BubbleSort1(array) {
let flag = true
for (let i = 0; i < array.length && flag; i++) {
flag = false
for (let j = array.length - 1; j > i; j--) {
if (array[j] < array[j - 1]) {
swap(array, j, j - 1)
flag = true
}
}
}
}