/** * 選擇排序 * @author owen_liu * */ public class ChoiceSort { public static void main(String[] args) { int a[] = {23, 38, 65, 33, 44, 13, 27, 49, 33, 34, 12, 64, 5, 4, 62}; // sort(a); _choiceSort(a); // for (int i = 0; i < a.length; i++) { // System.out.print(a[i] + ","); // } } /** * 選擇排序 * @param a */ public static void sort(int[] a) { int temp = 0; for (int i = 0; i < a.length; i++) { for (int j = i + 1; j < a.length; j++) { if (a[i] > a[j]) { temp = a[i]; a[i] = a[j]; a[j] = temp; } } //打印效果輸出 for (int k = 0; k < a.length; k++) { System.out.print(a[k] + " "); } System.out.println(); } } /** * 選擇排序(優化) * @param a */ public static void _choiceSort(int[] a) { if (a == null || a.length <= 0) { return; } int min = 0; int tmp = 0; for (int i = 0; i < a.length; i++) { min = i; /* 將當前下標定義爲最小值下標 */ for (int j = i + 1; j < a.length; j++) { if (a[min] > a[j]) { /* 若是有小於當前最小值的關鍵字 */ min = j; /* 將此關鍵字的下標賦值給min */ } } if (i != min) {/* 若min不等於i,說明找到最小值,交換 */ tmp = a[min]; a[min] = a[i]; a[i] = tmp; } //打印效果輸出 for (int k = 0; k < a.length; k++) { System.out.print(a[k] + " "); } System.out.println(); } } }
程序運行效果:java
4 38 65 33 44 13 27 49 33 34 12 64 5 23 62
4 5 65 33 44 13 27 49 33 34 12 64 38 23 62
4 5 12 33 44 13 27 49 33 34 65 64 38 23 62
4 5 12 13 44 33 27 49 33 34 65 64 38 23 62
4 5 12 13 23 33 27 49 33 34 65 64 38 44 62
4 5 12 13 23 27 33 49 33 34 65 64 38 44 62
4 5 12 13 23 27 33 49 33 34 65 64 38 44 62
4 5 12 13 23 27 33 33 49 34 65 64 38 44 62
4 5 12 13 23 27 33 33 34 49 65 64 38 44 62
4 5 12 13 23 27 33 33 34 38 65 64 49 44 62
4 5 12 13 23 27 33 33 34 38 44 64 49 65 62
4 5 12 13 23 27 33 33 34 38 44 49 64 65 62
4 5 12 13 23 27 33 33 34 38 44 49 62 65 64
4 5 12 13 23 27 33 33 34 38 44 49 62 64 65
4 5 12 13 23 27 33 33 34 38 44 49 62 64 65 優化