选择排序
Posted zhengzhaoxiang
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了选择排序相关的知识,希望对你有一定的参考价值。
选择排序是一种简单直观的排序算法,其基本原理,对于一组记录的数据,通过第一次比较得到最小的记录,然后将该记录与第一条记录的位置交换;接着对不包含第一个以外的记录进行比较,得到最小记录并与第二个记录进行位置交换;重复该过程,知道进行比较的记录只有一个时为止。
以数组 {38,65,97,76,13,27,49} 为例:
13[65 97 76 38 27 49]
13 27[97 76 38 65 49]
13 27 38[76 97 65 49]
13 27 38 49[97 65 76]
13 27 38 49 65[97 76]
13 27 38 49 65 76[97]
13 27 38 49 65 76 97
【代码如下】:
1 /** 2 * 选择排序 3 */ 4 public class SelectionSort { 5 public static void main(String[] args) { 6 Integer[] arr = {38,65,97,76,13,27,49}; 7 SelectionSort.sort(arr); 8 System.out.printf(Arrays.asList(arr).toString()); 9 } 10 public static void sort(Integer[] arr){ 11 int len = arr.length; 12 int temp; 13 for(int i=0;i<len-1;i++){ 14 for(int j=i+1;j<len;j++){ 15 if(arr[i] > arr[j]){ 16 temp=arr[i]; 17 arr[i]=arr[j]; 18 arr[j]=temp; 19 } 20 } 21 } 22 } 23 }
【输出结果】:[13, 27, 38, 49, 65, 76, 97]
比较次数 ,比较次数与关键字的初始状态无关,总的比较次数 。交换次数 ,最好情况是,已经有序,交换0次;最坏情况交换 次,逆序交换 次。交换次数比冒泡排序少多了,由于交换所需 CPU 时间比比较所需的 CPU 时间多,n 值较小时,选择排序比冒泡排序快。
以上是关于选择排序的主要内容,如果未能解决你的问题,请参考以下文章
初识Spring源码 -- doResolveDependency | findAutowireCandidates | @Order@Priority调用排序 | @Autowired注入(代码片段