冒泡排序是数据结构与算法的基础知识,每一个程序员都应该认真掌握冒泡排序的核心思想,以及对应的 for while do-while 递归形式。
例如 3 2 1 第一趟: 第一次: 3 > 2 交换 交换后:2 3 1 第二次: 2 >1 交换 交换后: 2 1 3 第二趟: 第一次: 2 > 1交换 交换后: 1 2 3
源数据:5 8 2 1 6 9 4 3 7 0 排序后:0 1 2 3 4 5 6 7 8 9 5 < 8 不交换 5 8 2 1 6 9 4 3 7 0 8 > 2 交换… 5 2 8 1 6 9 4 3 7 0 8 > 1 交换… 5 2 1 8 6 9 4 3 7 0 8 > 6 交换… 5 2 1 6 8 9 4 3 7 0 8 < 9 不交换 5 2 1 6 8 9 4 3 7 0 9 > 4 交换… 5 2 1 6 8 4 9 3 7 0 9 > 3 交换… 5 2 1 6 8 4 3 9 7 0 9 > 7 交换… 5 2 1 6 8 4 3 7 9 0 9 > 0 交换… 5 2 1 6 8 4 3 7 0 9 下一次交换 2 5 1 6 8 4 3 7 0 9 2 1 5 6 8 4 3 7 0 9 2 1 5 6 8 4 3 7 0 9 2 1 5 6 8 4 3 7 0 9 2 1 5 6 4 8 3 7 0 9 2 1 5 6 4 3 8 7 0 9 2 1 5 6 4 3 7 8 0 9 2 1 5 6 4 3 7 0 8 9
下一次交换 1 2 5 6 4 3 7 0 8 9 1 2 5 6 4 3 7 0 8 9 1 2 5 6 4 3 7 0 8 9 1 2 5 4 6 3 7 0 8 9 1 2 5 4 3 6 7 0 8 9 1 2 5 4 3 6 7 0 8 9 1 2 5 4 3 6 0 7 8 9
下一次交换 1 2 5 4 3 6 0 7 8 9 1 2 5 4 3 6 0 7 8 9 1 2 4 5 3 6 0 7 8 9 1 2 4 3 5 6 0 7 8 9 1 2 4 3 5 6 0 7 8 9 1 2 4 3 5 0 6 7 8 9
下一次交换 1 2 4 3 5 0 6 7 8 9 1 2 4 3 5 0 6 7 8 9 1 2 3 4 5 0 6 7 8 9 1 2 3 4 5 0 6 7 8 9 1 2 3 4 0 5 6 7 8 9
下一次交换 1 2 3 4 0 5 6 7 8 9 1 2 3 4 0 5 6 7 8 9 1 2 3 4 0 5 6 7 8 9 1 2 3 0 4 5 6 7 8 9
下一次交换 1 2 3 0 4 5 6 7 8 9 1 2 3 0 4 5 6 7 8 9 1 2 0 3 4 5 6 7 8 9
下一次交换 1 2 0 3 4 5 6 7 8 9 1 0 2 3 4 5 6 7 8 9
下一次交换 0 1 2 3 4 5 6 7 8 9
5 2 1 6 8 4 3 7 0 9 //这次交换 一共变化了9次 2 1 5 6 4 3 7 0 8 9 // 8次 1 2 5 4 3 6 0 7 8 9 1 2 4 3 5 0 6 7 8 9 1 2 3 4 0 5 6 7 8 9 1 2 3 0 4 5 6 7 8 9 1 2 0 3 4 5 6 7 8 9 1 0 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 每一次小交换是9 8 7 6 5 4 3 2 1 次交换,也就是说
for(int i = 0;i < N-1;i++){ for(int j = 0;j < N-1-i;i++){ 交换 ... } }