交换排序之 【冒泡排序】
2014-08-22 00:00
106 查看
摘要: 我也在考虑,怎样将冒泡排序讲的生动易懂些,TMD,语言能力不够!
class BubbleSorter { public static void main(String[] args) { int temp; //临时变量,用于数字交换 boolean flag = false; //是否发生交换,false没发生,true发生 int[] arrayInt = {21,345,32,567,90,99};//需排序的目标数组 for(int i = 0; i < arrayInt.length; i++) { for (int j = 0; j < arrayInt.length - i - 1; j++) { //这里 - i - 1是精髓,循环次数呈递减趋势 if (arrayInt[j] < arrayInt[j + 1]) { temp = arrayInt[j]; arrayInt[j] = arrayInt[j + 1]; arrayInt[j + 1] = temp; flag = true; //冒泡排序精髓在于两数比较,然后做交换。首尾相连是关键。 } } if(!flag) { return; } } System.out.print("ArrayList: "); for (int ints : arrayInt) { System.out.print(", " + ints); } } } 看下执行过程: 排序前:21 345 32 567 90 99 第一次排序(外循环 I = 0 ): {345 21} 32 567 90 99(内循环第一轮结果) 345 {32 21} 567 90 99(内循环第二轮结果) 345 32 {567 21} 90 99(内循环第三轮结果) 345 32 567 {90 21} 99(内循环第四轮结果) 345 32 567 90 {99 21}(内循环第五轮结果) 第二次排序(外循环 I = 1 ): {345 32} 567 90 99 21(内循环第一轮结果) 345 {567 32} 90 99 21(内循环第二轮结果) 345 567 {90 32} 99 21(内循环第三轮结果) 345 567 90 {99 32} 21(内循环第四轮结果) 第三次排序(外循环 I = 2 ): {567 345} 90 99 32 21(内循环第一轮结果) 567 {345 90} 99 32 21 (内循环第二轮结果) 567 345 {99 90} 32 21 (内循环第三轮结果) (实际上到这一步时候,数组已经完成排序,后面的循环就不需要了。 故用标记flag标注,为false时候,表明数组已经有序,无需后面循环了。 直接结束循环。不过,还是看看后面执行过程 ): 第四次排序(外循环 I = 3 ): {567 345} 99 90 32 21 (内循环第一轮结果) 567 {345 99} 90 32 21 (内循环第二轮结果) 第五次排序(外循环 I = 4 ): {567 345}99 90 32 21 (内循环第一轮结果) 第六次排序(外循环 I = 5 ): 内循环直接退出,结束。
相关文章推荐
- 数据结构&算法实践—【排序|交换排序】冒泡排序及改进
- 第十六周项目1—交换排序之冒泡排序
- 第16周项目交换排序之冒泡排序
- 交换排序------冒泡排序
- 算法:交换排序之冒泡排序
- 5类内部排序----交换排序之冒泡排序
- 八大排序算法之五--交换排序—冒泡排序(Bubble Sort)
- 排序算法基础篇交换排序之冒泡排序
- 数据结构&算法实践—【排序|交换排序】冒泡排序及改进
- 交换排序-冒泡排序和快速排序
- 数据结构实验之排序二:交换排序 Time Limit: 1000MS Memory Limit: 65536KB Submit Statistic Problem Description 冒泡排序和
- 七大经典排序【 交换排序】之冒泡排序
- 【第16周-内部排序项目3—交换排序之冒泡排序】
- 八大排序 -- 交换排序之【冒泡排序】
- 排序算法四:交换排序之冒泡排序
- 3 -- 交换排序之冒泡排序
- 排序 - 交换排序 [1 - 冒泡排序] + 简单选择排序。。
- JavaSE第三十五讲:冒泡排序、交换排序及快速排序原理与实现
- 冒泡排序-交换排序
- 内部交换排序---冒泡排序