原理:
每轮遍历都假定本次遍历的首个索引对应的值为最小值,如第一轮对应0,第二轮对应1。拿假定索引对应的值和后面索引的值依次做比较,如果后面的值小于假定索引对应的值,那么把后面索引值作为假定索引值,这样就能找到最小值对应的索引,本轮遍历结束后交换最小值所在索引的值和第一个所引处的值。
代码实现
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));
}
}