zoukankan      html  css  js  c++  java
  • 排序算法(一)

    选择排序

    流程

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

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

      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);
    
        }
    
    }
  • 相关阅读:
    python增加 删除列表元素
    Fildder2
    Appscan使用第三方浏览器
    Appscan的下载安装
    http状态码
    python学习资料
    Fiddler抓包工具
    性能测试的一些资料
    Jmeter分布式测试
    内存溢出的原因及解决办法(转)
  • 原文地址:https://www.cnblogs.com/juzhuxiaozhu/p/12776139.html
Copyright © 2011-2022 走看看