1、图解
思想是:每次选择一个最小的元素放到前面的有序序列中去。这里采用记录下标位置来解决,具体的代码如下:
package com.paixuTest;
import java.util.Arrays;
/**
* 选择排序 1)简单选择排序 2)堆选择排序
* 简单选择排序
* 思想:每一趟选择最小的元素放有序队列中,存放的下标,最后拿去交换
* 时间复杂度:n平方
*/
public class jianDanXuanZhePaiXu {
public static void main(String[] args) {
int[] arr = new int[]{5,4,3,2,1,2,3,8,4,3};
// 只需要比较n-1趟就行了,最后一个没必要了
for (int i=0;i<arr.length-1;i++){
// 默认i为最小的
int min = i;
for (int j=i+1;j<arr.length;j++){
if (arr[j]<arr[min]){
min = j;
}
}
if (min!=i){ // 如果这里不相等了,说明上面的内层for循环中,找到了一个比min下标所指元素更小的元素
int temp = 0;
temp = arr[i];
arr[i] = arr[min];
arr[min] = temp;
}
}
System.out.println(Arrays.toString(arr));
}
}
2、时间复杂度:
最好:nn
平均:nn
最坏:nn
稳定性:不稳定