算法思想
列如初始数组:a=[10,4,1,3,2,0,5]; 如果要求升序怎么办?
- 第一步:找到最小数0,然后把0放在首位,等于把10和0位置互换得到新的数组a=[0,4,1,3,2,10,5];
- 第二步:在4、1、3、2、10、5 找到最小的数1 ,将1 与4 的位置互换,得到新的数组a=[0,1,4,3,2,10,5];
- 第三步:以此类推…最终得到有序数组a=[0,1,2,3,4,5,10];
/**
* 选择排序
* @author qiu
*无论如何时间复杂度T=O(N^2)
*/
public class SelectSort {
public static void main(String[] args) {
double [] arr = {42.89,34.08,0.39,0.65,4.39,};
selectSort(arr,arr.length);
System.out.println(Arrays.toString(arr));
}
public static void selectSort(double [] arr,int n){
for (int i = 0; i < n-1; i++) {
int index = i;
int j;
// 找出最小值得元素下标
for (j = i + 1; j < n; j++) {
if (arr[j] < arr[index]) {
index = j;
}
}
double tmp = arr[index];
arr[index] = arr[i];
arr[i] = tmp;
}
}
}