冒泡排序是最出名的排序算法之一,總共有八大排序。
冒泡排序代碼并不復雜,共兩層循環,外層冒泡輪數,里層依次比較。
算法步驟:
1. 比較數組中兩個相鄰元素,如果第一個元素比第二個元素大,交換位置
2. 每一次比較,都會產生一個最大,或者最小的數字;
3. 下一輪可以少一次排序
4. 依次循環,直到結束
代碼演示:
public static void main(String[] args) {int[] a = {1,5,6,98,52,66,91,2};int[] sort = sort(a);System.out.println(Arrays.toString(sort)); //[98, 91, 66, 52, 6, 5, 2, 1]}//冒泡排序public static int[] sort(int[] array){//臨時變量int c = 0;//外層循環,判斷我們循環要走多少次for (int i = 0; i < array.length-1; i++) { //-1是為了不讓溢出//內層循環,比較兩個數for (int j = 0; j < array.length-1-i; j++) {if (array[j+1]>array[j]){c = array[j];array[j] = array[j+1];array[j+1] = c;}}}return array;}
當然,我們還能進一步優化一下:
public static int[] sort(int[] array){//臨時變量int c = 0;//外層循環,判斷我們循環要走多少次for (int i = 0; i < array.length-1; i++) { //-1是為了不讓溢出boolean flag = false; //通過flag標志位減少無意義比較//內層循環,比較兩個數for (int j = 0; j < array.length-1-i; j++) {if (array[j+1]>array[j]){c = array[j];array[j] = array[j+1];array[j+1] = c;flag = true;}}if (flag == false){break;}}return array;}