选择排序
Posted imwuqing
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了选择排序相关的知识,希望对你有一定的参考价值。
选择排序
时间复杂度:N2
动图描述(升序):
黄色代表已排序列,红色代表剩余元素中最小元素,蓝色代表当前位置。
代码实现Section类如下:
1 package cug.wuqing; 2 3 /** 4 * 选择排序 5 * 6 * 描述:从数组中找到最小的元素,将其与数组第一个元素交换;再在剩下的元素中找最小的元素,将其与数组第二个元素交换...... 7 * 直到整个数组排序,因不断的在选择剩余元素中的最小者,故为选择排序。 8 * 时间复杂度:T(N2) 9 */ 10 public abstract class Selection { 11 12 public static void sort(Comparable[] arr) { 13 14 for(int j = 0; j < arr.length; j ++){ 15 for(int i = j; i < arr.length; i ++) { 16 //得到最小元素 17 if(less(arr[i], arr[j])) { 18 //交换元素 19 exch(arr,i,j); 20 } 21 } 22 } 23 } 24 25 /** 26 * 元素v是否小于元素w 27 * @param v 28 * @param w 29 * @return 是ture,否false 30 */ 31 32 private static boolean less(Comparable v, Comparable w){ 33 34 return v.compareTo(w)<0; 35 } 36 37 /** 38 * 交换数组arr中索引为i、j元素的位置 39 * @param arr 40 * @param i 41 * @param j 42 */ 43 private static void exch(Comparable[] arr, int i, int j){ 44 45 Comparable temp = arr[i]; 46 arr[i] = arr[j]; 47 arr[j] = temp; 48 } 49 50 /** 51 * 在单行中打印数组 52 * @param a 53 */ 54 public static void show(Comparable[] arr){ 55 56 for(int i = 0; i < arr.length; i ++){ 57 System.out.print(arr[i] + " "); 58 } 59 System.out.println(); 60 } 61 62 /** 63 * 数组元素是否升序排列 64 * @param a 65 * @return 是true,否false 66 */ 67 public static boolean isSorted(Comparable[] arr){ 68 69 for(int i = 1; i < arr.length; i ++){ 70 if(less(arr[i], arr[i-1])) { 71 return false; 72 } 73 } 74 return true; 75 76 } 77 }
以上是关于选择排序的主要内容,如果未能解决你的问题,请参考以下文章
初识Spring源码 -- doResolveDependency | findAutowireCandidates | @Order@Priority调用排序 | @Autowired注入(代码片段