排序原理
1.每一次遍历的过程中,都假定第一个索引处的元素是最小值,和其他索引处的值依次进行比较,如果当前索引处的值大于其他某个索引处的值,则假定其他某个索引处的值为最小值,最后可以找到最小值所在的索引
2.交换第一个索引处和最小值所在的索引处的值
代码实现
public static void selectSort(double a[]){
//i为某趟要确定的索引
for(int i=0;i<=a.length-2;i++){
int minIndex=i;
for (int j=i+1;j<=a.length-1;j++){
if(a[minIndex]>a[j]){
minIndex=j;
}
}
//交换最小元素所在的索引minIndex处的值和i处的值
double temp=a[minIndex];
a[minIndex]=a[i];
a[i]=temp;
}
}
测试:
public static void main(String[] args) {
double arr[]={4,5,3,6,11,14,1,8};
selectSort(arr);
System.out.println(Arrays.toString(arr));//import java.util.Arrays;
// for(double k:arr)
// System.out.println(k);
// 输出:[1.0, 3.0, 4.0, 5.0, 6.0, 8.0, 11.0, 14.0]
}
算法分析
选择排序是给每个位置选择当前元素最小的,例如有数据{5(1),8 ,5(2), 2, 9 },第一遍选择到的最小元素为2,所以5(1)会和2进行交换位置,此时5(1)到了5(2)后面,破坏了稳定性,所以选择排序是一种不稳定的排序算法。