1、基本概念
选择排序是比较一圈,找到最小记录,放入数组的开始位置
[3,2,1] 比较一圈 找到最小下标2 将下标2的值与下标0的值交换 循环
2、代码
public static void main(String[] args) {
int[] src = { 3,2,1,4,5,6,7,16,15,14,13,12,11,10,8,9 };
selectSort(src);
print(src);
}
//选择排序
public static void selectSort(int src[]){
int min;
for (int i = 0; i < src.length-1; i++) {
min = i;
for (int j = i+1; j < src.length-1; j++) {
if(src[min] > src[j])//如果下标min的值大于下标j的值,则将下标j赋给min
min = j;
}
if(i != min) //如果i和min不等 表示有更小的值
swap(src, i, min);
}
}
private static void swap(int src[], int i, int j){
int tmp = src[i];
src[i] = src[j];
src[j] = tmp;
}
public static void print(int src[]){
for (int i = 0; i < src.length; i++) {
System.out.print(src[i] + " ");
}
System.out.println();
}
3、时间复杂度
最好情况 排好序的情况O(n)
最坏情况 倒叙 为O(n2)
时间复杂度O与冒泡相同,但是选择排序的交换操作要比冒泡少