冒泡排序
- 冒泡原理
水下面有很多个气泡,每个气泡体积并不相同,根据常识应该知道体积大的气泡会较快冒出水面,那么这种形式的排序就是冒泡排序.每次对需要排序的集合一一进行比较,最大的率先排序完成.
- 图解冒泡
冒泡图存在各种,动态图or高智商交换2D图,我们这边利用表格展示冒泡排序的过程
0 | 1 | 2 | 3 | 4 | |
7 | 1 | 2 | 4 | 3 | |
1 | 2 | 4 | 3 | 7 | i=4 |
1 | 2 | 3 | 4 | 7 | i=3 |
1 | 2 | 3 | 4 | 7 | i=2 |
1 | 2 | 4 | 3 | 7 | i=1 |
0 | 1 | 2 | 3 | 4 | |
7 | 1 | 2 | 4 | 3 | |
1 | 7 | 2 | 4 | 3 | j=1 |
1 | 2 | 7 | 4 | 3 | j=2 |
1 | 2 | 4 | 7 | 3 | j=3 |
1 | 2 | 4 | 3 | 7 | j=4 |
- 算法实现
冒泡排序应该是排序算法中比较容易理解和实现的,直接看代码
function swap(A, i, j){
const t = A[i]
A[i] = A[j]
A[j] = t
}
function bubble_sort(A){
for(let i=A.length-1; i>=1; i--){ //第一次循环结束i指向第一大得值,依次类推
for(let j=1; j<=i; j++){
//循环结束j指向 A[0]-A[j]中的最大值
A[j-1]>A[j] && swap(A, j-1, j)
}
//循环结束A[i]-A[i-1]已经排序
}
}