* 简单选择排序:最好的移动次数0次,但元素间的比较次数与序列初始值无关,始终是n(n-1)/2.时间复杂度始终是n*n
* 空间复杂度为O(1)
* 不稳定的排序:L{2,2,1}--->L{1,2,2}
* 特点:由于每一次都会选出最小值,因此每一趟都会确定出一个元素的最终位置,
比较简单直接上代码
public class SimpleSorting {
public static void simpleSort(int[] arr){
// 判断方式
if(arr==null||arr.length<2){
return;
}
// 始终让i为后面范围内最小的值
for(int i=0;i<arr.length-1;i++){
int minValue=i;
for(int j=i+1;j<arr.length-1;j++){
// 将后面的每个值都与当前最小值比较,如果i范围后面有更小的值,则更新最小值的位置
minValue=arr[j]>arr[minValue]?minValue:j;
}
// 交换i与最小值
swap(arr,i,minValue);
}
// 打印数组
for (int i : arr) {
System.out.println(i);
}
}
// 交换两个数的值
public static void swap(int[] arr,int i,int minValue){
int temp =arr[i];
arr[i] =arr[minValue];
arr[minValue]=temp;
}
public static void main(String[] args) {
int[] arr = {1,3,5,7,9,2,4,6,8};
simpleSort(arr);
}
}