本篇文章介紹直接選擇排序算法的JAVA實現。
直接選擇排序算法的基本思想是:n個記錄的文件的直接選擇排序可經過n-1趟直接選擇排序得到有序結果:
①初始狀態:無序區爲R[1..n],有序區爲空。
②第1趟排序
在無序區R[1..n]中選出關鍵字最小的記錄R[k],將它與無序區的第1個記錄R[1]交換,使R[1..1]和R[2..n]分別變爲記錄個數增加1個的新有序區和記錄個數減少1個的新無序區。
……
③第i趟排序
第i趟排序開始時,當前有序區和無序區分別爲R[1..i-1]和R[i..n](1≤i≤n-1)。該趟排序從當前無序區中選出關鍵字最小的記錄R[k],將它與無序區的第1個記錄R[i]交換,使R[1..i]和R[i+1..n]分別變爲記錄個數增加1個的新有序區和記錄個數減少1個的新無序區。
這樣,n個記錄的文件的直接選擇排序可經過n-1趟直接選擇排序得到有序結果。
以下是直接選擇排序算法的JAVA代碼實現:
package cn.simon.sort; public class SelectSort { public static <T extends Comparable<? super T>> void selectSort(T[] array) { for (int i = 0; i <= array.length - 2; i++) { int lowestIndex = i; for (int j = array.length - 1; j > i; j--) { if (array[j].compareTo(array[lowestIndex]) < 0) { lowestIndex = j; } } T temp = array[i]; array[i] = array[lowestIndex]; array[lowestIndex] = temp; } } public static void main(String[] args) { Integer[] testArray = {23, 25, 12, 42, 35}; SelectSort.selectSort(testArray); System.out.println("The result is:"); for (Integer item : testArray) { System.out.print(item); System.out.print(' '); } } }