选择排序

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注入(代码片段

VSCode自定义代码片段——CSS选择器

VSCode自定义代码片段6——CSS选择器

在第6731次释放指针后双重免费或损坏

微信小程序代码片段

pycharm添加Odoo代码片段