05_冒泡排序
package algorithm; import java.util.Arrays; /** * 冒泡排序:时间复杂度为(1+2+3+4+...+(n-1))~O(n2) * 思想:相邻的数不断进行比较交换,使得最小的数不断的浮出水面 * @author cloud * @data 2016年7月18日 * @version 1.0 * @description */ public class BubbleSort { /** * 并不是传统的冒泡排序 * * @param array */ public static void bubbleSortOne(int[] array) { int len = array.length; for (int i = 0; i < len - 1; i++) { for (int j = i + 1; j < len; j++) { if (array[j] < array[i]) { int temp = array[i]; array[i] = array[j]; array[j] = temp; } } } System.out.println(Arrays.toString(array)); } /** * 典型的冒泡排序,小的数从后边往前冒 * * @param array */ public static void bubbleSortTwo(int[] array) { int len = array.length; for (int i = 0; i < len; i++) { for (int j = len - 1; j > i; j--) { // 后边的一个数小于前边的一个数时冒泡,总是比较相邻的两个数 if (array[j] < array[j - 1]) { int temp = array[j - 1]; array[j - 1] = array[j]; array[j] = temp; } } } System.out.println(Arrays.toString(array)); } /** * 优化后的冒泡排序,注意flag的位置 * * @param array */ public static void bubbleSortThree(int[] array) { int len = array.length; boolean flag = true;// 用于标记是否发生过交换 for (int i = 0; i < len && flag; i++) { flag = false; for (int j = len - 1; j > i; j--) { if (array[j] < array[j - 1]) { int temp = array[j - 1]; array[j - 1] = array[j]; array[j] = temp; flag = true; } } } System.out.println(Arrays.toString(array)); } public static void main(String[] args) { int[] array = { 5, 6, 9, 8, 7, 1, 3, 2, 4 }; bubbleSortOne(array); bubbleSortTwo(array); bubbleSortThree(array); } }
    http://www.cnblogs.com/makexu/

 
                
            
         
         浙公网安备 33010602011771号
浙公网安备 33010602011771号