标签:str bsp sys system com 变化 顺序 public 慢慢
冒泡排序法又称为交换排序法,是由观察水中冒泡变化构思而成,气泡随着水深压力而改变。气泡在水底时,压力最大,气泡最小;当慢慢浮上水面时,发现气泡由小渐渐变大。
冒泡排序法的比较方式由第一个元素开始,比较相邻元素大小,若大小顺序有误,则对调后再进行下一个元素的比较。如此扫描过一次之后就可确保最后一个元素是位于正确的顺序。接着再逐步进行第二次扫描,直到完成所有元素的排序关系为止。
由此可知 5 个元素的冒泡排序法必须执行 5~1 次扫描,第一次扫描需比较 5~1 次,共比较 4+3+2+1 次
/** * 传统冒泡排序法 * */ public class BubbleSort { public static void main(String[] args) { int[] data = {6, 5, 9, 7, 2, 8}; int temp; System.out.print("原始数据为:"); for (int i : data) { System.out.print("[" + i + "]"); } System.out.println(); for (int i = data.length - 1; i > 0; i--) {for (int j = 0; j < i; j++) { if (data[j] > data[j + 1]) { temp = data[j]; data[j] = data[j + 1]; data[j + 1] = temp; } }// 扫描后的结果 System.out.print("第 " + (data.length - i) + " 次结果:"); for (int k : data) { System.out.print("[" + k + "]"); } System.out.println(); } System.out.print("排序后结果:"); for (int i : data) { System.out.print("[" + i + "]"); } } }
由上面的程序可以看出冒泡排序法有一个缺点,即不管数据是否已排序完成都固定会执行 n(n-1)/2 次,而我们可以通过在程序中加入判断来判断何时提前中断程序,又可得到正确的数据,来提高程序执行效率。
/** * 传统冒泡排序法 * */ public class BubbleSort { public static void main(String[] args) { int[] data = {6, 5, 9, 7, 2, 8}; int temp; System.out.print("原始数据为:"); for (int i : data) { System.out.print("[" + i + "]"); } System.out.println(); for (int i = data.length - 1; i > 0; i--) { boolean isYes = true; for (int j = 0; j < i; j++) { if (data[j] > data[j + 1]) { temp = data[j]; data[j] = data[j + 1]; data[j + 1] = temp; isYes = false; } } if (isYes) { break; } // 扫描后的结果 System.out.print("第 " + (data.length - i) + " 次结果:"); for (int k : data) { System.out.print("[" + k + "]"); } System.out.println(); } System.out.print("排序后结果:"); for (int i : data) { System.out.print("[" + i + "]"); } } }
标签:str bsp sys system com 变化 顺序 public 慢慢
原文地址:https://www.cnblogs.com/qpliang/p/12677403.html