选择排序:通过n-i次关键字间的比较,从n-i+1个记录中选出关键字最小的记录,并和第 个记录交换。
最优时间复杂度 , 最坏时间复杂度 ** **
;
代码
/*** @Description: 选择排序:* 通过n-i次关键字间的比较,从n-i+1个记录中选出关键字最小的记录,* 并和i个体记录交换* 最优时间复杂度 O(n), 最坏时间复杂度 O(n2)* @Author: lizhouwei* @CreateDate: 2018/6/23 9:35*/public class SelectSort {public static void selectSort(Integer[] arr) {if (arr == null || arr.length == 0) {return;}SortUtil.printArray("选择排序前", arr);int min = 0;int i = 0;for (i = 0; i < arr.length; i++) {min = i;for (int j = i + 1; j < arr.length; j++) {if (arr[j] < arr[min]) {min = j;}}SortUtil.swap(arr, i, min);}SortUtil.printArray("选择排序后", arr);}}
时间复杂度
选择排序最大特点就是交换移动数据次数相当少,并且无论最好最差的情况,其比较次数都是一样的,即第i趟排序需要进行n-i 次关键字的比较,此时需要次,因此时间复杂度为
;
