1、选择排序
(1)取第一个数与后面的所有数进行比较,当大于比较的数的时候,交换,因此第一轮之后第一个是最小数;
(2)取第二个数与后面的所有数进行比较,重复第一步;
2、代码实现
import java.util.Arrays;
public void SelectOrder{
public static void main(String[] args){
// 定义一个随机数组
int[] a = {123,45,657,8,4,34,90};
selectOrder(a);
System.out.println(Arrays.toString(a));
}
public static void selectOrder(int[] a){
// 外层循环取第一个数
for(int i=0; i<a.length-1; i++){
// 内存循环取第二个数,因为第一个数之前的已经是有序的,所有不用比较
for(int j=i+1;j<a.length-1; j++){
// 小的往前放
if(a[j]<a[i]){
int temp = a[i];
a[i] = a[j];
a[j] = temp;
}
}
}
}
}
3、时间复杂度
时间复杂度:O(N^2)
空间复杂度:O(N^2)
与冒泡排序的时间复杂度一样,但是由于选择排序减少了交换的次数,因此相比冒泡排序是有速度上的提高。