首页 > 编程语言 > 详细

排序算法(一)

时间:2020-04-25 23:45:28      阅读:65      评论:0      收藏:0      [点我收藏+]

选择排序

流程

  • 外循环:依次遍历每个元素,下标作为最小值索引,对应元素作为最小值。

  • 内循环:依次遍历外层下标以后的每一个元素,进行:

    1. 与最小值比较,若小于最小值,则更新当前下标为最小值索引。
    2. 遍历完毕,交换最小值。

特点

  1. 运行时间与输入无关。都为\(\frac{1}{2}N^2\)

  2. 数据移动最小,与数组大小 N 成正比。

  3. 选择的含义体现在每次内循环都选出了最小的元素。

代码如下:

public class Selection{
    //对外提供排序方法
    public static void sort(Comparable[] a){
        for(int i=0;i<a.length;i++){
            //最小值对应的索引
            int min=i;
            for(int j=i+1;j<a.length;j++){
                if(less(a[j],a[min])){
                    min=j;
                }
            }
            exch(a,i,min);
        }
    }

    //判断前者是否小于后者
    private static boolean less(Comparable a,Comparable b){
        return a.compareTo(b)<0;
    }

    //两者交换
    private static void exch(Comparable[] a,int i,int j){
        Comparable t=a[i];
        a[i]=a[j];
        a[j]=t;

    }

    //判断是否有序(自然序)
    private static boolean issort(Comparable[] a){
        for(int i=0;i<a.length-1;i++){
            if(less(a[i+1],a[i])){
                return false;
            }
        }
        return true;
    }
    
    //对外提供展示方法
    public static void show(Comparable[] a){
        for(Comparable c:a){
            System.out.println(c);
        }
    }

    public static void main(String[] args) {
        Integer[] a={8,7,6,8,2,4,5,2,1};
        sort(a);
        System.out.println(issort(a));
        show(a);

    }

}

排序算法(一)

原文:https://www.cnblogs.com/juzhuxiaozhu/p/12776139.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!