文章目录
选择排序
(1)算法思路
-
第一趟,从n 个记录中找出关键码最小的记录与第一个记录交换。
-
第二趟,从第二个记录开始的n-1 个记录中再选出关键码最小的记录与第二个记录交换。
-
以此类推…
-
第i 趟,则从第i 个记录开始的n-i+1 个记录中选出关键码最小的记录与第i 个记录交换。
-
直到整个序列按关键码有序。
(2)算法举例
(3)特点
- 交换移动数据次数很少。
- 算法时间复杂度为O(n2)。
- 简单选择排序性能优于冒泡排序。
(4)实现代码
public static void selectSort(int[] arr){
for(int i=0;i< arr.length - 1;i++){
int minIndex = i;
int min = arr[i];
for(int j=1+i;j<arr.length;j++){
if(min > arr[j]){ //说明假定的最小值,并不是最小
min = arr[j]; //重置min
minIndex = j; //重置minIndex
}
}
if(minIndex !=i){
arr[minIndex] = arr[i];
arr[i] = min; //找到了第i轮中的最小值
}
}
}