基本思想
选择排序需要~N2/2 次比较和~N 次交换,它的运行时间与输入无关,这个特点使得它对一个已经排序的数组也需要这么多的比较和交换操作。
选择排序是一种原地排序算法。适用于小文件。由于选择操作是基于键值的交换在需要时才执行,所以选择排序常用于数值较大和键值较小的文件。
- 优点
- 容易实现
- 原地排序(不需要额外的存储空间)
- 缺点
- 扩展性较差 :O( N 2 N^2 N2)
- 算法
①. 从待排序序列中,找到关键字最小的元素;
②. 如果最小元素不是待排序序列的第一个元素,将其和第一个元素互换;
③. 从余下的 N - 1 个元素中,找出关键字最小的元素,重复①、②步,直到排序结束
- Java版本实现
public class SelectionSort<T extends Comparable<T>> extends Sort<T> {
@Override
public void sort(T[] nums) {
int N = nums.length;
for (int i = 0; i < N - 1; i++) {
int min = i;
for (int j = i + 1; j < N; j++) {
if (less