版权声明:转载请声明: https://blog.csdn.net/MingJieZuo/article/details/83715133
一、概述
本节主要简单介绍一下直接选择排序算法,直接选择排序(Straight Select Sorting) 也是一种简单的排序方法,它的基本思想是:第一次从R[0]-R[n-1]中选取最小值,与R[0]交换,第二次从R[1]-R[n-1]中选取最小值,与R[1]交换,…,第n-1次从R[n-2]-R[n-1]中选取最小值,与R[n-2]交换,总共通过n-1次,得到一个按排序码从小到大排列的有序序列。摘自百度百科。
二、分析
直接选择排序的思路很简单,在这里我们就以数组array为例,其值为array[13, 17, 14, 15, 12, 14],首先我们在array数组中找到最小值,并与array[0]进行交换
同理,我们array[1]到array[5]中寻找最小值,随后最小值与array[1]互换
同上,我们在数组中array[2]-array[5]中寻找最小的数字,因为array[2]本身为最小数字,所以我们不需要交换处理了
同上,我们在数组中array[3]-array[5]中寻找最小的数字,随后与array[3]交换位置
同上,我们在数组中array[4]-array[5]中寻找最小的数字,随后与array[4]互换位置。到这里我们的排序就结束了,我们发现数组array已经有序了
三、代码展示
这是我们的直接选择排序算法代码
private static int[] selectSort(int[] array) {
int length = array.length;
// 共需要n-1轮比较
for(int i=0; i<length-1; i++){
int minIndex = i;
for(int j=i; j<length-1; j++){
// 从小到大排列(通常放在循环体里判断)
if(array[minIndex] > array[j+1]){
minIndex = j+1;
}
}
if(i != minIndex){
// 将最小值与 array[i]值互换
int temp = array[i];
array[i] = array[minIndex];
array[minIndex] = temp;
}
}
return array;
}
四、总结
当然代码的编写并不是固定的,肯定会有很多变形格式,其实我们研究的也是其直接选择的思想和每种写法的效率问题。如果想要查看更多算法基础,去我的博客目录里查看吧,因为关于每块知识点的介绍,博客单节写的比较零散,不容易查找。