算法原理:
选择排序算法是最简单的排序算法:首先找到数组总最小的元素,然后将它和数组的第一个元素交换位置(如果第一个元素是最小的元素那就和自己交换位置),然后再剩下的元素中找到最小的元素,做上述操作,直到将整个数组重新拍寻为止。
算法特点:
- 运行时间和输入无关
- 数据移动最少
算法实现:
package com.example;
/**
*
* @Description : 用选择算法对数组排序
* @ClassName : SelectionSort
* @author : RelaxOne
* @date : 2018年8月18日 下午3:46:23
*/
public class SelectionSort {
/**
* @Description: 对一个数组进行升序排列
* @author : RelaxOne
* @date : 2018年8月18日
* @param arr
* @return arr
*/
public static Double[] sort_up(Double[] arr) {
for(int i=0;i<arr.length;i++) {
int k = i;
for(int j=i;j<arr.length;j++) {
if(arr[k] > arr[j])
k = j;
}
double temp = arr[k];
arr[k] = arr[i];
arr[i] = temp;
}
return arr;
}
/**
* @Description: 对一个数组进行降序排列
* @author : RelaxOne
* @date : 2018年8月18日
* @param arr
* @return arr
*/
public static Double[] sort_down(Double[] arr) {
for(int i=0;i<arr.length;i++) {
int k = i;
for(int j=i;j<arr.length;j++) {
if(arr[k] <arr[j]) {
k = j;
}
}
double temp = arr[k];
arr[k] = arr[i];
arr[i] = temp;
}
return arr;
}
}
测试代码:
package com.example;
public class Test {
public static void main(String[] args) {
Double[] arr = new Double[] {1.2,-4.2,2.5,3.8,1.9};
arr = SelectionSort.sort_down(arr);
printArray(arr);
}
public static void printArray(Double[] arr) {
for(int i=0;i<arr.length;i++) {
System.out.print(arr[i] + " ");
}
}
}
运行结果: