排序>>交换排序>>冒泡排序
List:
1 2 3 4 5 |
0.概念+伪代码+示例分析 1.基本冒泡排序 2.冒泡排序改进1 3.冒泡排序改进2——局部冒泡排序 4.Question |
- start
基本概念:
维基百科http://zh.wikipedia.org/wiki/%E5%86%92%E6%B3%A1%E6%8E%92%E5%BA%8F
伪代码:(来自百科)
1 2 3 4 5 6 7 8 9 |
function bubblesort (A : list[1..n]) { var int i, j; for i from n downto 1 { for j from 0 to i-1 { if (A[j] > A[j+1]) swap(A[j], A[j+1]) } } } |
简要排序过程的示例:(基本冒泡排序)
初始数组
1 |
[50, 10, 30, 20, 40, 60] |
第一轮:
1 2 3 4 5 |
cmp 50 10 -> change [10, 50, 30, 20, 40, 60] cmp 50 30 -> change [10, 30, 50, 20, 40, 60] cmp 50 20 -> change [10, 30, 20, 50, 40, 60] cmp 50 40 -> change [10, 30, 20, 40, 50, 60] cmp 50 60 -> nochange |
第二轮:
1 2 3 4 5 |
[10, 30, 20, 40, 50, 60] cmp 10 30 -> nochange cmp 30 20 -> change [10, 20, 30, 40, 50, 60] cmp 30 40 -> nochange cmp 40 50 -> nochange |
第三轮
1 2 3 4 |
[10, 20, 30, 40, 50, 60] cmp 10 20 -> nochange cmp 20 30 -> nochange cmp 30 40 -> nochange |
第四轮:
排序>>交换排序>>冒泡排序
List:
1 2 3 4 5 |
0.概念+伪代码+示例分析 1.基本冒泡排序 2.冒泡排序改进1 3.冒泡排序改进2——局部冒泡排序 4.Question |
- start
基本概念:
维基百科http://zh.wikipedia.org/wiki/%E5%86%92%E6%B3%A1%E6%8E%92%E5%BA%8F
伪代码:(来自百科)
1 2 3 4 5 6 7 8 9 |
function bubblesort (A : list[1..n]) { var int i, j; for i from n downto 1 { for j from 0 to i-1 { if (A[j] > A[j+1]) swap(A[j], A[j+1]) } } } |
简要排序过程的示例:(基本冒泡排序)
初始数组
1 |
[50, 10, 30, 20, 40, 60] |
第一轮:
1 2 3 4 5 |
cmp 50 10 -> change [10, 50, 30, 20, 40, 60] cmp 50 30 -> change [10, 30, 50, 20, 40, 60] cmp 50 20 -> change [10, 30, 20, 50, 40, 60] cmp 50 40 -> change [10, 30, 20, 40, 50, 60] cmp 50 60 -> nochange |
第二轮:
1 2 3 4 5 |
[10, 30, 20, 40, 50, 60] cmp 10 30 -> nochange cmp 30 20 -> change [10, 20, 30, 40, 50, 60] cmp 30 40 -> nochange cmp 40 50 -> nochange |
第三轮
1 2 3 4 |
[10, 20, 30, 40, 50, 60] cmp 10 20 -> nochange cmp 20 30 -> nochange cmp 30 40 -> nochange |
第四轮:
1 2 3 |
[10, 20, 30, 40, 50, 60] cmp |