原神同人文—當空想參加奧運會(6)
阿新 • • 發佈:2022-04-04
總共有八大排序,其中氣泡排序是最出名的排序演算法之一。
氣泡排序
- 兩層迴圈,外層冒泡輪數,裡層依次比較,江湖人盡皆知。
- 我們看到巢狀迴圈,應該立馬就能得出這個演算法的時間複雜度為O(n2)
程式碼
package com.study; import java.util.Arrays; public class T { public static void main(String[] args) { int[] arr = {1, 3, 4, 5, 78, 97, 8, 45, 46, 4, 87, 897}; int[] sort = sort(arr); System.out.println(Arrays.toString(arr)); // System.out.println(Arrays.toString(sort)); } public static int[] sort(int[] arr) { //氣泡排序 //1.比較陣列中,兩個相鄰的元素,如果第一個數比第二個數大,我們就交換他們的位置 // 2.每一次比較,都會產生出一個最大,或者最小的數字: // 3.下-輪則可以少一次排序! // 4.依次迴圈,直到結柬! | //int[] arr={1,2,3,4,5} int temp; // 外層迴圈,判斷要走多少次 for (int i = 0; i < arr.length - 1; i++) { //記憶體迴圈 比較相鄰兩個數,如果第一個數比第二個數小,則交換位置 for (int j = 0; j < arr.length - i - 1; j++) { if (arr[j] < arr[j + 1]) { temp = arr[j]; arr[j] = arr[j + 1]; arr[j + 1] = temp; } } } return arr; } }
PS:這裡對原陣列進行了更改
簡單優化
package com.study; import java.util.Arrays; public class T { public static void main(String[] args) { int[] arr = {1, 3, 4, 5, 78, 97, 8, 45, 46, 4, 87, 897}; int[] sort = sort(arr); System.out.println(Arrays.toString(arr)); // System.out.println(Arrays.toString(sort)); } public static int[] sort(int[] arr) { //氣泡排序 //1.比較陣列中,兩個相鄰的元素,如果第一個數比第二個數大,我們就交換他們的位置 // 2.每一次比較,都會產生出一個最大,或者最小的數字: // 3.下-輪則可以少一次排序! // 4.依次迴圈,直到結柬! | //int[] arr={1,2,3,4,5} int temp; // 外層迴圈,判斷要走多少次 for (int i = 0; i < arr.length - 1; i++) { boolean flag = false;//通過flag標誌位減少沒有意義的比較 //記憶體迴圈 比較相鄰兩個數,如果第一個數比第二個數小,則交換位置 for (int j = 0; j < arr.length - i - 1; j++) { if (arr[j] < arr[j + 1]) { temp = arr[j]; arr[j] = arr[j + 1]; arr[j + 1] = temp; flag = true; } } if (flag == false) { break; } } return arr; } }
PS:注意區分內外層分別控制的是什麼,這裡通過標誌位減少了後續無意義的比較。