原理:
每輪遍歷都假定本次遍歷的首個(gè)索引對(duì)應(yīng)的值為最小值韵卤,如第一輪對(duì)應(yīng)0,第二輪對(duì)應(yīng)1。拿假定索引對(duì)應(yīng)的值和后面索引的值依次做比較交掏,如果后面的值小于假定索引對(duì)應(yīng)的值,那么把后面索引值作為假定索引值刃鳄,這樣就能找到最小值對(duì)應(yīng)的索引盅弛,本輪遍歷結(jié)束后交換最小值所在索引的值和第一個(gè)所引處的值。
代碼實(shí)現(xiàn)
package china.guo.calc.simplesort;
import java.util.Arrays;
//選擇排序
public class Select {
//排序
public static void sort(Comparable[] array) {
for (int i =0;i<array.length-1; i++) {
int index = i;
for (int j = i+1; j <array.length; j++) {
if (greater(array[index],array[j])){
index = j;
}
}
exchange(array,i,index);
}
}
//比較c1和c2大小
public static boolean greater(Comparable c1,Comparable c2){
return c1.compareTo(c2)>0;
}
//交換索引i和索引j處的元素位置
public static void exchange(Comparable[] array,int i,int j){
Comparable temp;
temp = array[i];
array[i]=array[j];
array[j]=temp;
}
public static void main(String[] args) {
Integer[] array = new Integer[]{4,5,3,6,1,2};
sort(array);
System.out.println(Arrays.toString(array));
}
}