冒泡排序
将需要排序的列表,从第一位开始,每相临两个元素比较,如果某一位大于(或小于)他的下一位,则交换两个元素位置,直至不能交换。
这种排序的平均时间复杂度是平方级的,效率不高,容易实现。
/** * BubbleSort.java * * @author xieyan * @date 2013/06/20 * @version 1.0 */ package sort; /** * BubbleSort.java */ public class BubbleSort { /* * 冒泡排序: * 将需要排序的列表,从第一位开始,每相临两个元素比较,如果某一位大于(或小于)他的下一位,则交换两个元素位置。 * 直至不能交换。 * * 这种排序的平均时间复杂度是平方级的,效率不高,容易实现 */ /** * bubbleSortAsc * * <PRE> * 升序 * </PRE> * * @param arr */ public static int[] bubbleSortAsc(int[] arr) { if(arr == null) { return null; } int temp = 0; for (int i = arr.length - 1; i > -1; i--) { for(int j = 0; j < i; j++) { if(arr[j] > arr[j + 1]) { temp = arr[j]; arr[j] = arr[j + 1]; arr[j + 1] = temp; } } } return arr; } /** * bubbleSortDesc * * <PRE> * 降序 * </PRE> * * @param arr */ public static int[] bubbleSortDesc(int[] arr) { if(arr == null) { return null; } int temp = 0; for (int i = arr.length - 1; i > -1; i--) { for(int j = 0; j < i; j++) { if(arr[j] < arr[j + 1]) { temp = arr[j]; arr[j] = arr[j + 1]; arr[j + 1] = temp; } } } return arr; } public static void main(String[] args) { int[] a = new int[] { 5, 7, 8, 3, 4, 2, 9, 1, 6 }; int[] b = bubbleSortAsc(a); for (int i = 0; i < b.length; i++) { System.out.println(b[i]); } b = bubbleSortDesc(a); for (int i = 0; i < b.length; i++) { System.out.println(b[i]); } } }