简单选择排序的算法思想(时间复杂度0(n^2)):
时间复杂度:最好O(n^2),最坏O(n^2)
空间复杂度:O(1)
稳定性:不稳定
对于不稳定性给出一个例子:
序列5 8 5 2 9,第一遍选择第1个元素5会和2交换,那么原序列中2个5的相对前后顺序就被破坏了,所以选择排序不是一个稳定的排序算法。
每一趟在n-i+1(i=1,2,.....,n-1)个记录中选取关键字最小的记录作为有序序列中第i个记录
代码:
public static void main(String[] args) {
Integer[] arr=new Integer[]{1,12,9,5,3,71,24};
int temp;
for(int i=0;i<arr.length-1;i++){
int minIndex=i;
for(int j=i+1;j<arr.length;j++){
if(arr[minIndex]>arr[j]){
minIndex=j;
}
}
if(minIndex!=i){
//交换
temp=arr[i];
arr[i]=arr[minIndex];
arr[minIndex]=temp;
}
}
}