氣泡排序及其優化
阿新 • • 發佈:2021-07-10
氣泡排序
public class Demo07 { public static void main(String[] args) { int[] a = {52,32,62,42,84,26,35,47,65}; int[] ints = sortArray(a); System.out.println(Arrays.toString(ints)); } /* 比較陣列中,兩個相鄰的元素,如果第一個數比第二個數大,我們就交換他們的位置每一次比較,都會產生出一個最大,或者最小的數字; 下一輪則可以少一次排序! 依次迴圈,直到結束! */ public static int[] sortArray(int[] arrays){ //氣泡排序 int temp = 0;//定義一個臨時變數 for (int i = 0; i < arrays.length-1; i++) {//外層迴圈,判斷我們需要迴圈多少次 for(int j = 0;j < arrays.length-1-i;j++){//內層迴圈,比較大小 if(arrays[j+1] > arrays[j]){//應用臨時變數進行交換 temp = arrays[j]; arrays[j] = arrays[j+1]; arrays[j+1] = temp; } } } return arrays; } }
氣泡排序優化
public class Demo07 { public static void main(String[] args) { int[] a = {52,32,62,42,84,26,35,47,65}; int[] ints = sortArray(a); System.out.println(Arrays.toString(ints)); } /* 比較陣列中,兩個相鄰的元素,如果第一個數比第二個數大,我們就交換他們的位置每一次比較,都會產生出一個最大,或者最小的數字; 下一輪則可以少一次排序! 依次迴圈,直到結束! */ public static int[] sortArray(int[] arrays){ //氣泡排序 int temp = 0;//定義一個臨時變數 boolean flag = false;//定義一個標誌位 for (int i = 0; i < arrays.length-1; i++) {//外層迴圈,判斷我們需要迴圈多少次 for(int j = 0;j < arrays.length-1-i;j++){//內層迴圈,比較大小 if(arrays[j+1] > arrays[j]){//臨時變數進行交換 temp = arrays[j]; arrays[j] = arrays[j+1]; arrays[j+1] = temp; flag = true; } } if(flag == false){ break; } } return arrays; } }