选择排序(SelectSort)
1.选择排序原理(摘自百度百科):
第一次从待排序的数据元素中选出最小(或最大)的一个元素,存放在序列的起始位置,然后再从剩余的未排序元素中寻找到最小(大)元素,然后放到已排序的序列的末尾。以此类推,直到全部待排序的数据元素的个数为零。选择排序是不稳定的排序方法
2.选择排序图示
假设待排序序列为 (3,4,2,1),如果采用选择排序对其进行升序(由小到大)排序,则整个排序过程如下所示:
1)第一次排序:
已排序 | 未排序 |
2)第二次排序
3)第三次排序
3.选择排序代码
public void SelectionSort(int[] arr) {
for (int i = 0; i < arr.length - 1; i++) {
int minIndex = i;//记录下假定最小值下标
int min = arr[i];//记录下假定最小值
for (int j = i + 1; j < arr.length; j++) {
if (min > arr[j]) { // 说明假定的最小值,并不是最小
min = arr[j]; // 重置min
minIndex = j; // 重置minIndex
}
}
// 如果最小值不是假定的值则进行交换
if (minIndex != i) {
arr[minIndex] = arr[i];
arr[i] = min;
}
}
}
本博文当作初学数据结构与算法萌新的学习笔记,可能会有欠缺错漏之处,欢迎指正,大家一起进步吧!