JavaScript 冒泡排序冒泡排序
冒泡排序冒泡排序
1. 什么是冒泡排序?什么是冒泡排序?
计算机语言基础算法的一种。
把数组里面的数字按照规律排好序。
2. 算法描述:算法描述:
比较相邻的两个数,如果第一个数比第二个数大,则两数交换位置 ;
对之后的相邻元素进行同样的工作,从开始到最后一对,这样进行一次排序后,数据的最后一位会是最大值 ,第一次循环进
行的次数为 arr.length-1 ;
之后对所有的元素重复以上的步骤,且以后每次循环的次数为arr.length-1-i (i为循环第几次 ,i 从零开始);
重复上述步骤,直到排序完成。
3. 代码实现代码实现:
冒泡排序的核心:冒泡排序的核心:
比较相邻的两个数,如果第一个数比第二个数大,则两数交换位置
冒泡排序的口诀:冒泡排序的口诀:
两个for循环,一个减一次,里面减外面变量
var arr = [1, 9, 6, 4, 5, 8, 3, 2, 7] // 准备一个乱序的数组
for (var i = 0; i < arr.length - 1; i++) { // 因为数组索引是从 0 开始的,所以外循环判断条件是 i < arr.length-1
for (var k = 0; k arr[k + 1]) {
var tmp = arr[k] //把 arr 索引 k 位置的数据赋值给 tmp 变量
arr[k] = arr[k + 1] // 把 arr 索引 k+1 位置的数据赋值给 arr 索引 k 位置
arr[k + 1] = tmp // 把 tmp 保存的值赋值给 arr 索引 k+1 的位置
}
}
}
/*
代码说明:
+ 当 i=0 时,
内循环执行以后,把最大的数字放在了最后一个, arr = [5, 6, 8, 2, 7, 3, 4, 1, 9] 这时内循环的判断条件:k < arr.length - 1 - 0
+ 当 i=1时,
内循环执行以后,把最大的数字放在了最后一个,倒数第二大放在了倒数第二的位置,arr = [5, 6, 2, 7, 3, 4, 1, 8, 9] 这时循环出来的最大数只需和最后一位比
较,所以内循环的判断条件:k < arr.length - 1 - 1
+ 当 i=2 时,
内循环执行以后,倒数第三大放在了倒数第三的位置,arr = [5, 6, 2, 3, 4, 1, 7, 8, 9] 这时这时循环出来的最大数只需和倒数第二位比较,内循环的判断条
件:k < arr.length - 1 - 2
+ ......
+ 因此内循环的判断条件写成: k < arr.length - 1 - i
*/
可以根据下面动图理解上述代码可以根据下面动图理解上述代码
作者:ノHonEy°倩
评论10