选择排序就是从数据里面找到最小的放到最左边,每次比较所有数据后交换一次.
我从之前的冒泡排序类继承下来的.
package array; /** * * @author leon.lee */ public class SelectionSort extends BubbleSort{ public SelectionSort(int arrayLength){ super(arrayLength); } @Override public void sort() { for(int i=0;i<arrayData.length-1;i++){ int minValuePostion = i; for(int j=i+1;j<arrayData.length;j++){ if(arrayData[j]<arrayData[minValuePostion]){ minValuePostion = j; } } swap(i,minValuePostion); } } public static void main(String[] args) { SelectionSort bs ; try{ bs = new SelectionSort(10); }catch(ExceptionInInitializerError e){ System.out.println(e.getMessage()); return; } bs.printArrayList(); bs.sort(); bs.printArrayList(); } }
选择排序使用的时间依然是O(N2),但是交换次数之用了N次,当交换操作时间花费比比较花费时间多的时候选择排序实际上是比较快的.