时间复杂度和空间复杂度选择排序是一种简单直观的排序算法,无论什么数据进去都是 O(n²) 的时间复杂度。所以用到它的时候,数据规模越小越好。唯一的好处可能就是不占用额外的内存空间了吧。
- 时间复杂度:是 O(N^2)
- 空间复杂度,最优的情况下(已经有顺序)复杂度为: O(0) ;最差的情况下(全部元素都要重新排序)复杂度为: O(n );平均复杂度:O(1)
遍历数组,每次都查找序列中最小(大)的元素,存放在结束(开始)的位置,下一次接着从第二个元素开始遍历第二小(大)的元素,依次类推,直到所有元素均排序完毕。
public static void sort(int [] arr){
int len = arr.length;
int temp = 0;
for (int i = 0; i < len - 1;i++){
for (int j = i + 1; j < len;j++){
if(arr[i] > arr[j]){
temp = arr[i];
arr[i] = arr[j];
arr[j] = temp;
}
}
}
System.out.println(Arrays.toString(arr));
}
上述方法虽然能够满足需求,但是太过消耗性能,每比较一次就会交换数字,故需要进行优化,先记录好每次最小(大)的数字下标,再进行数字交换操作,如下图所示:
public static void Update_sort(int [] arr){
int len = arr.length;
int temp = 0;
for (int i = 0; i < len -1 ;i++){
int minIndex = i;
int minNum = arr[minIndex];
for (int j = i + 1;j
运行结果



