6-2选择排序
选择排序
基本思想
选择排序(select sorting) 也是一种简单的排序方法。它的基本思想是:第一次从arr[0]^ arr[n-1]中选取最小值, 与arr[0]交换,第二次从arr[1]^ arr[n-1]中选取最小值, 与arr[1]交换, 第三次从arr[2]^ arr[n-1]中选取最小值,与arr[2]交换,.,第i次从arr[i-1]^ arr[n-1]中选取最小值,与arr[i-1]交换,.,第n-1次从arr[n- -2]^ arr[n-1]中选取最小值, 与arr[n-2]交换,总共通过n-1次,得到一个按排序码从小到大排列的有序序列。
图解

代码实现
package sort;
/**
* @Function :
* date 2021/5/15 - 16:17
* How :
*/
public class SelectSort {
public static void main(String[] args) {
int [] a ={7,5,6,4,2,3,8,1,9,5,7,5,6};;
int minIndex =0;
for (int i = 0; i < a.length; i++) {
print(a);
int min = a[i];
for (int j=i+1;j<a.length;j++){
if ( a[j]<min ){
min = a[j];
minIndex = j;
}
}
a[minIndex] = a[i];
a[i]=min;
}
}
public static void print(int [] a){
for ( int temp : a ) {
System.out.printf("\t"+temp);
}
System.out.println();
}
}
选择排序和冒泡排序的区别
区别主要在交换的方式上
每一轮都把最大或最小的元素筛选出来放在相应的位置上
这是相同的
但是,对于每一轮,比如第一轮,要把1~n 中最大的那个放到n这个位置
冒泡法每次比较和移动相邻的两项
而选择排序每次交换当前项和第n项
总的来说,两种排序比较的次数是相同的,但交换的次数,选择排序是更少的,虽然两者的时间复杂度都是 O(n^2)
但通常,选择排序更快一点,选择排序是不稳定排序

浙公网安备 33010602011771号