冒泡排序算法如同他的名字一样, 将数据的值看作一个个气泡,按照一定的顺序(大到小, 或者小到大)依次移动到两端的位置
最终数据的排列方式有两种 [小, 大]
或者 [大, 小]
冒泡的方式有两种 大泡先冒
, 或者 小泡先冒
[小, 大]
大泡先冒
↓
function pupple(arr) {
let length = arr.length;
if(length === 1){ return arr }
let res = arr;
for (let i = 0; i < length - 1; i++){
for (let j = 0; j < length - 1 - i; j++) {
if(res[j] > res[j + 1]){
let temp = res[j]
res[j] = res[j +1]
res[j + 1] = temp
}
}
}
return res;
}
两层 for
循环中, 外层循环的次数决定了每冒一个气泡, 需要对数据比较的次。 例如一个不重复的, 大小不同的 10
位长度的数组, 选出其中最大的一个最多需要比较 9
遍, 选出该数字之后, 之后的操作便不再对其进行操作, 所以下一次比较需要比较 8
遍。所以内循环每次循环的次数是逐次减少的。 内循环是对数据具体的比较, 每次比较某个数据跟其下一个数据。
-------- 9
------- 8
------ 7
----- 6
---- 5
--- 4
-- 3
- 2
1
纵向表示外循环的次数 横向的数字表示内循环的次数
网友评论