冒泡排序说明
对数组进行 冒泡排序 算是比较简单的一种数组排序方式,冒泡排序也是容易理解的一种排序算法了。
冒泡排序实现方式
数组中有 n
个数,比较每相邻两个数,如果前者大于后者,就把两个数交换位置;这样一来,第一轮就可以选出一个最大的数放在最后面;那么经过 n-1
(数组的 length - 1) 轮,就完成了所有数的排序。
冒泡排序实现图片展示
let arr = [3, 44, 38, 5, 47, 15, 36, 26, 27, 2, 46, 4, 19, 50, 48]
//因为冒泡排序算法是两两比较 所以外层比较次数应为数组长度-1
for (let i = 0; i < arr.length - 1; i++) {
// 内循环的比较不必全部执行完 因为每一轮的内循环都会将最大的数排在最右
// 所以后面的次数不用比较 所以内循环的次数是递减的 需要减去一个i
for (let j = 0; j < arr.length - 1 - i; j++) {
//这里是用前一个数和后一个数进行比较,如果前一个数比后一个大就执行if语句里的代码
if (arr[j] > arr[j + 1]) {
//定义一个临时变量
let temp
//将比较前的一个数赋值给临时变量,此时arr[j]是空值
temp = arr[j]
//将arr[j + 1]赋值给arr[j] arr[j+1]也就是两个数比较时的后一个数
arr[j] = arr[j + 1]
//最后临时变量赋值给arr[j + 1] 就让本次换位执行完
arr[j + 1] = temp
}
}
}
console.log(arr)
总结
外层 for 循环控制循环次数
内层 for 循环进行两数交换,找每次的最大数,排到最后