它的工作原理是每一次从待排序的数据元素中选出最小(或最大)的一个元素,存放在序列的起始位置,直到全部待排序的数据元素排完。
例如:
初始值 : 9 2 6 1 4 8 3 5
第一趟 : 1 9 2 6 4 8 3 5
第二趟 : 1 2 9 6 4 8 3 5
第三趟 : 1 2 3 9 6 4 8 5
第四趟 : 1 2 3 4 9 6 8 5
第五趟 : 1 2 3 4 5 9 6 8
第六趟 : 1 2 3 4 5 6 9 8
第七趟 : 1 2 3 4 5 6 8 9
代码实现一:
public int [] selectionSort(int [] a){
for(int i = 0 ; i<a.length;i++){
//找出i后面中最小的一个
int minIndex = i;
for(int j = i+1;j<a.length;j++){
if(a[j]<a[minIndex]){
minIndex = j;
}
}
//交换
int swap = a[i];
a[i] = a[minIndex];
a[minIndex]=swap;
}
代码实现二:
public int [] selectionSort(int [] v){
for(int i=0; i<v.length; i++){
int min = v[i];
int temp;
int index = i;
for(int j=i+1;j<v.length;j++){
if(v[j] < min){
min = v[j];
index = j;
}
}
temp = v[i];
v[i] = min;
v[index]= temp;
}
}