简单选择排序的基本思想:通过n-i-1次比较,从n-i个关键字中选出最小的关键字.然后与第i个关键字进行交换.
核心代码:
public static void selectSort(int[] data){
int min = -1; // 用于最小值的小标
for(int i=0; i<data.length; i++){
min = i; // 每次假设当前数为最小数,记录其下标
for(int j=i+1; j<data.length; j++){
if(data[j] < data[min]){
min = j;
}
}
if(min != i){
swap(data, min, i);
}
}
}
完整代码:
package cn.ccnu.sort;
public class Select {
public static void selectSort(int[] data){
int min = -1; // 用于最小值的小标
for(int i=0; i<data.length; i++){
min = i; // 每次假设当前数为最小数,记录其下标
for(int j=i+1; j<data.length; j++){
if(data[j] <= data[min]){
min = j;
}
}
if(min != i){
swap(data, min, i);
}
}
}
private static void swap(int[] data, int a, int b) {
int temp = data[a];
data[a] = data[b];
data[b] = temp;
}
public static void main(String[] args) {
int[] data = {10, 3, 12, 5, 4, 9, 5, 7, 6};
selectSort(data);
for (int i : data) {
System.out.print(i + " ");
}
}
}