选择排序(Java)
选择排序(Selection sort)是一种简单直观的排序算法。它的工作原理是:第一次从待排序的数据元素中选出最小(或最大)的一个元素,存放在序列的起始位置,然后再从剩余的未排序元素中寻找到最小(大)元素,然后放到已排序的序列的末尾。以此类推,直到全部待排序的数据元素的个数为零
- 时间复杂度:O(n2)
- 算法稳定性:不稳定
- 实质:依次选择相对最大(小)的元素
图示
(图片来自:https://www.cnblogs.com/guoyaohua/p/8600214.html)
代码如下
public class Selectionsort {
public static void main(String[] args) {
int arr[]= {2,4,-1,-2,12,25,3};
selectionsort(arr);
System.out.print("选择排序后结果为:");
for(int i=0;i<arr.length;i++) {
System.out.print(arr[i]+" ");
}
}
private static int[] selectionsort(int[] arr) {
if(arr.length==0) {
return arr;
}
for(int i=0;i<arr.length;i++) {
int index=i;//建立索引
for(int j=i;j<arr.length;j++) {
if(arr[j]<arr[index]) {//循环一次,选择出在除选择后中的最小值
index=j;
}
}
int temp=arr[index];//交换
arr[index]=arr[i];
arr[i]=temp;
}
return arr;
}
}
运行结果
选择排序后结果为:-2 -1 2 3 4 12 25