基本思想:
在要排序的一组数中,选出最小(或者最大)的一个数与第1个位置的数交换;然后在剩下的数当中再找最小(或者最大)的与第2个位置的数交换,依次类推,直到第n-1个元素(倒数第二个数)和第n个元素(最后一个数)比较为止。
public static int[] selectSort(int[]a,int n){
for(int i = 0;i<n;i++){
for(int j = i+1;j<n;j++){
if(a[j]<a[i]){
int temp = a[i];
a[i] = a[j];
a[j] = temp;
}
}
}
return a;
}
或者只传待排序列:
public static int[] selectSort(int[]a){
int n = a.length;
for (int i=0;i<n;i++){
for(int j=i+1;j<n;j++){
if(a[j]<a[i]){
int temp = a[i];
a[i] = a[j];
a[j] = temp;
}
}
}
return a;
}
效率分析:
- 时间复杂度:O(n2)
- 空间复杂度:O(1)
- 稳定性:不稳定