package demo.sort;
import java.util.Arrays;
/**
* 选择排序: 选择第一个索引值, 假设是最小值, 初始化为最小索引: minIndex
* 遍历比较,交换
*/
public class Selection {
/**
* 数组元素排序: 小元素在左边, 大元素在右边
* @param arr
*/
public static void sort(Comparable[] arr){
for(int i = 0; i < arr.length-1; i++){
int minIndex = i;
for(int j = i+1; j < arr.length; j++){
if(greater(arr[minIndex], arr[j])){
minIndex = j;
}
}
exch(arr, i, minIndex);
}
}
/**
* a.greater(b)
* a>b 返回true
* @param a 实现Comparable接口的类对象
* @param b 实现Comparable接口的类对象
* @return
*/
public static boolean greater(Comparable a, Comparable b){
return a.compareTo(b) > 0;
}
/**
* 交换数组元素: 索引i和索引j的值互换
* @param arr
* @param i
* @param j
*/
public static void exch(Comparable[] arr, int i, int j){
Comparable temp;
temp = arr[i];
arr[i] = arr[j];
arr[j] = temp;
}
public static void main(String[] args) {
Integer[] arr = {6,5,4,3,2,1};
sort(arr);
System.out.println(Arrays.toString(arr));
}
}