排序算法图解(二):选择排序
·
1 选择排序简介
选择排序(Selection sort)是一种简单直观的排序算法。它的工作原理是:第一次从待排序的数据元素中选出最小(或最大)的一个元素,存放在序列的起始位置,然后再从剩余的未排序元素中寻找到最小(大)元素,然后放到已排序的序列的末尾。以此类推,直到全部待排序的数据元素的个数为零。选择排序是不稳定的排序方法。

2 图解选择排序算法
选择排序的基本思想如下:
第一次:从arr[0]~arr[n-1]中选取最小值,与arr[0]进行交换;
第二次:从arr[1]~arr[n-1]中选取最小值,与arr[1]进行交换;
第三次:从arr[2]~arr[n-1]中选取最小值,与arr[2]进行交换;
…
第 i 次:从arr[i]~arr[i-1]中选取最小值,与arr[i]进行交换;
总共通过n-1次,可以得到从小到大的有序序列。
以序列:{8, 3, 2, 1, 7, 4, 6, 5} 为例!分步骤图解如下:

思路说明:
- 在每趟排序时,都假定当前位置的元素为最小值,如果在遍历过程中发现有比当前位置元素还小的值,则替换最小值。(先将最小值记录,此趟遍历完成再替换)
- 选择排序一共有
数组大小-1趟排序。
3 选择排序代码实现
import java.util.Arrays;
/**
* @author 兴趣使然黄小黄
* @version 1.0
* 选择排序
*/
public class SelectSort {
public static void main(String[] args) {
int[] array = {8, 3, 2, 1, 7, 4, 6, 5};
System.out.println("排序前: " + Arrays.toString(array));
selectSort(array);
System.out.println("排序后: " + Arrays.toString(array));
}
//选择排序
public static void selectSort(int[] arr){
//选择排序过程
for (int i = 0; i < arr.length - 1; i++) {
int minIndex = i; //假定最小索引,最小值为第一个元素
int min = arr[minIndex];
for (int j = i + 1; j < arr.length; j++) {
if (min > arr[j]){
//更新最小值
min = arr[j];
minIndex = j;
}
}
//将最小值放进arr[i]
if (i != minIndex){
arr[minIndex] = arr[i];
arr[i] = min;
}
//输出每轮排序后的结果
System.out.println("第" + (i+1) + "趟: " + Arrays.toString(arr));
}
}
}
运行结果如下:

写在最后
本文被 Java数据结构 收录点击订阅专栏 , 持续更新中。
创作不易,如果你有任何问题,欢迎私信,感谢您的支持!

更多推荐
所有评论(0)