算法思想
简单选择排序跟冒泡和直接插入一样简单的排序算法。
从待排序列中找一个最小的,放到已经排序的末尾。直接看代码
代码实现
public class SelectionSort {
public static void main(String[] args) {
int[] a={100,50,9,3, 4, 10, 3, 6, 7, 4, 1, 2};
int n=a.length;
for (int i=0;i<n-1;i++){//到倒数第二个即可,最后一个肯定是最大的
int miniIndex=i;
for (int j=i+1;j<n;j++){//从i+1开始,不用跟自己比,如果小于,则将最小的索引设为该下标
if (a[miniIndex]>a[j]){
miniIndex=j;
}
}
int t=a[i];
a[i]=a[miniIndex];
a[miniIndex]=t;
}
for (int i:a){
System.out.print(i+",");
}
}
}
算法分析
时间复杂度:妥妥的两层循环,O(n^2),最好最坏都是一样。
空间复杂度:O(1)
稳定性:不稳定,对于稳定不稳定一般就找有两个元素一样大看一看比如3,3,2。2跟第一个3交换,原来的33位置换了。