简单选择排序就是通过n-i次关键字间的比较,从n-i+1个记录中选出关键字最小的记录,并和第i个记录交换。
简而言之,就是每一趟记录最小值得索引值,然后交换,是一种稳定的排序算法。
Java版的代码如下:
package com.qian.sort;
import java.util.Arrays;
public class SelectSort {
public void selectSort(int[] nums) {
int min;
for (int i = 0; i < nums.length; i++) {
min = i;
for (int j = i + 1; j < nums.length; j++) {
if (nums[min] > nums[j]) {
min = j;
}
}
if (i != min) {
swap(nums, i, min);
}
}
}
private void swap(int[] nums, int low, int high) {
int temp = nums[low];
nums[low] = nums[high];
nums[high] = temp;
}
public static void main(String[] args) {
SelectSort sort = new SelectSort();
int[] nums = { 2, 7, 8, 3, 1, 6, 9, 0, 5, 4, 10, 15, 12 };
sort.selectSort(nums);
System.out.println(Arrays.toString(nums));
}
}
复杂度分析:
平均时间复杂度为O(n^2),最好时间复杂度为O(n^2),最坏时间复杂度也为O(n^2),,空间复杂度为平均时间复杂度为O(1),