码迷,mamicode.com
首页 > 编程语言 > 详细

选择排序

时间:2018-05-15 22:56:10      阅读:419      评论:0      收藏:0      [点我收藏+]

标签:分享图片   pre   private   select   代码   打印   http   sel   stat   

选择排序

时间复杂度: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 }

 

选择排序

标签:分享图片   pre   private   select   代码   打印   http   sel   stat   

原文地址:https://www.cnblogs.com/imwuqing/p/9043056.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!