本帖最后由 张洪慊 于 2013-5-1 00:29 编辑
抛开代码研究下思想,我以例子说明:- /*
- //看时对应下,我调整半天对不齐
- 冒泡排序:(从小到大,从零趟开始为了操作方便)
- 算法思想:
- 相邻两个数比较,两两比较得到的较大数,较大数不断后移,
- 最终每趟最大数沉底.
- 例如:三个数:5,3,1:5>3->true->交换 3 5 1->5>1->true->交换 3 1 5->那么5一定为三个数中最大的.以下也就是这种思想.
- 示例:下标 0 1 2 3 4
- i 5 3 7 9 1
-
- 3 5 7 9 1 5>3交换
- 第零趟: 3 5 7 9 1 5<7不动
- 3 5 7 9 1 7<9不动
- 3 5 7 1 9 9>1交换-->9为最大,arr[4]为9
- 共比较4(arr.length-0(趟数)-1)次
- 第一趟: 3 5 7 1 -->9不用在参与比较
- 3 5 7 1 3<5不动
- 3 5 7 1 5<7不动
- 3 5 1 7 7>1交换-->7为次大,arr[3]为7
- 共比较3(arr.length-1-1)次
- 第二趟: 3 5 1 -->7不用再参与比较
- 3 5 1 3<5不动
- 3 1 5 5>1交换-->arr[2]为5
- 共比较2(arr.length-2-1)次
- 第三趟: 3 1 -->5不用再参与比较
- 1 3 3>1交换-->arr[1]为3
- 共比较1(arr.length-3-1)次
- 共走了4(arr.length-1)趟
- 最后一定剩余一个数字1,不用再参与比较,肯定最小
- */
复制代码 |