本篇文章介绍直接选择排序class="tags" href="/tags/SuanFa.html" title=算法>算法的JAVA实现。
直接选择排序class="tags" href="/tags/SuanFa.html" title=算法>算法的基本思想是: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趟直接选择排序得到有序结果。
以下是直接选择排序class="tags" href="/tags/SuanFa.html" title=算法>算法的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(' '); } } }