34.冒泡排序
冒泡排序:
前后两个数两两进行比较
前 < 后, 则后面一个继续与下一个比较
前 > 后,则交换位置,再与下一个比较
第一轮比较完成可以确定最后一个数字的位置
再进行第二轮来确定倒数第二个的位置
直到排序完成
arr.length = 5
关于 j < arr.length-i-1,由于我们从第一个从0开始,那么我们看第0轮,j
j < 5-0-1也就是 j < 4 也就是说 j 最大取3 ,arr[3]与arr[3+1]进行比较
轮数/i | 0 | 1 | 2 | 3 | 4 | 比较次数/arr.length-i-1 |
0 | 5 | 4 | 3 | 2 | 1 | 4 |
1 | 4 | 3 | 2 | 1 | 5 | 3 |
2 | 3 | 2 | 1 | 4 | 5 | 2 |
3 | 2 | 1 | 3 | 4 | 5 | 1 |
1 | 2 | 3 | 4 | 5 |
注意可以每一轮都比较4次,只是算法比较占内存
let arr = [5,4,3,2,1]for(let i = 0; i < arr.length; i++){ // 比较的轮数 for(let j = 0; j < arr.length - i -1; j++){ //比较的组数 if(arr[j]>arr[j+1]){ let a = arr[j] arr[j] = arr[j+1] arr[j+1] = a } }}
赞 (0)