冒泡排序 (基础版, 没有优化)
for (var j = 0; j < arr.length; j++) {
for (var i = 0; i < arr.length; i++) {
if (arr[i] > arr[i + 1]) {
var temp = arr[i]
arr[i] = arr[i + 1]
arr[i + 1] = temp
}
}
console.log('第 ', j + 1, ' 轮冒泡排序后: ', arr)
}
分析
- 数组的前后两项交换 (
[0] 和 [1])
var temp = arr[0]
arr[0] = arr[1]
arr[1] = temp
console.log(arr)
- 因为要做前后两项的对比, 所以我们需要先拿到数组的所有元素, 所以写了一个 for 循环在循环内部判断,如果
前一项比后一项的值要大, 那么将前后两项交换位置
for (var i = 0; i < arr.length; i++) {
if (arr[i] > arr[i + 1]) {
var temp = arr[i]
arr[i] = arr[i + 1]
arr[i + 1] = temp
}
}
console.log('第 1 轮冒泡排序后: ', arr)
for (var i = 0; i < arr.length; i++) {
if (arr[i] > arr[i + 1]) {
var temp = arr[i]
arr[i] = arr[i + 1]
arr[i + 1] = temp
}
}
console.log('第 2 轮冒泡排序后: ', arr)
for (var i = 0; i < arr.length; i++) {
if (arr[i] > arr[i + 1]) {
var temp = arr[i]
arr[i] = arr[i + 1]
arr[i + 1] = temp
}
}
console.log('第 3 轮冒泡排序后: ', arr)
for (var i = 0; i < arr.length; i++) {
if (arr[i] > arr[i + 1]) {
var temp = arr[i]
arr[i] = arr[i + 1]
arr[i + 1] = temp
}
}
console.log('第 4 轮冒泡排序后: ', arr)
for (var i = 0; i < arr.length; i++) {
if (arr[i] > arr[i + 1]) {
var temp = arr[i]
arr[i] = arr[i + 1]
arr[i + 1] = temp
}
}
console.log('第 5 轮冒泡排序后: ', arr)
优化
var arr = [9, 8, 7, 6, 5, 4, 3, 2, 1]
for (var j = 0; j < arr.length - 1; j++) {
for (var i = 0; i < arr.length - 1 - j; i++) {
if (arr[i] > arr[i + 1]) {
var temp = arr[i]
arr[i] = arr[i + 1]
arr[i + 1] = temp
}
}
}