三種簡單排序的實現(氣泡排序,選擇排序,插入排序 )
阿新 • • 發佈:2019-01-03
氣泡排序:
public static void main(String[] args) { int[] a = {1, 7, 4, 3, 8, 2, 9, 6, 5}; for(int j = a.length; j > 0; j--) { //第一遍先找出最大的數,從第一個開始找,兩兩對比,大的數移到右邊 //第二遍在前n-1個數中重複第一遍的迴圈 for (int i = 0; i < j - 1; i++) { if (a[i] > a[i + 1]) { int k = a[i + 1]; a[i + 1] = a[i]; a[i] = k; } } } for (int i = 0; i < a.length; i++) { System.out.println(a[i]); } }
選擇排序:
public static void main(String[] args) { int[] a = {3, 7, 4, 1, 8, 2, 9, 6, 5}; for (int j = 0; j < a.length; j++) { //第一趟找出最小的元素,排在第一位,下一趟從第二個元素開始迴圈找出第二小的元素 for (int i = j + 1; i < a.length; i++) { if (a[j] > a[i]) { int k = a[j]; a[j] = a[i]; a[i] = k; } } } for (int i = 0; i < a.length; i++) { System.out.println(a[i]); } }
插入排序:
public static void main(String[] args) { int[] a = {3, 7, 4, 1, 8, 2, 9, 6, 5}; //從左至右開始,將要排序的數插入至自身左側已排序的數列中 for (int i = 1; i < a.length; i++) { int j; int k = a[i]; for (j = i; j > 0; j--) { if (a[j - 1] > k) { a[j] = a[j - 1]; } else { break; } } a[j] = k; } for (int i = 0; i < a.length; i++) { System.out.println(a[i]); } }
三種簡單排序演算法的效率都是O(N²)