对于经典算法,你是否也遇到这样的情形:学时觉得很清楚,可过阵子就忘了?
本系列文章就尝试解决这个问题。
研读那些排序算法,细品它们的名字,其实都很贴切。
比如冒泡排序就很形象,遍历n次,每次循环相邻元素两两比较,把其中大的元素往后放。例如:
上图演示了冒泡过程的第一次循环。其中,最大的元素5就像气泡一样逐步上升到最后一位。
我们把上述过程直接翻译成代码:
let array = [5, 4, 3, 2, 1]
for (let i = 0; i < array.length - 1; i++) {
if (array[i] > array[i+1]) {
swap(array, i, i+1)
}
}
console.log(array) // [4, 3, 2, 1, 5]
function swap(array, i, j) {
[array[i], array[j]] = [array[j], array[i]]
}
for (let j = 0; j < array.length; j++) {
for (let i = 0; i < array.length - 1; i++) {
if (array[i] > array[i+1]) {
swap(array, i, i+1)
}
}
}