• 插入排序——java实现


    插入排序的基本思想就是遍历一边列表,将a[i]依次通过a[i-1]、a[i-2]、a[i-3]...依次比较并交换位置的方式插入合适的位置。

    for: i from 0~n-1{

      for: j from i~0

        if(a[j] <= a[j-1]) 交换a[j]和a[j-1] break;

    }

     1 package 排序;
     2 
     3 import edu.princeton.cs.algs4.In;
     4 import edu.princeton.cs.algs4.StdOut;
     5 
     6 /**
     7  * 插入排序所需额时间取决于输入中元素的初始顺序。
     8  * 例如,对一个很大的且其中的元素已经有序或接近有序的数组进行排序会比对随机顺序的数组或是逆序数组进行排序要快的多
     9  *@author evasean www.cnblogs.com/evasean/
    10  *
    11  */
    12 @SuppressWarnings("rawtypes")
    13 public class Insertion插入排序 {
    14     public static void sort(Comparable[] a){
    15         int n = a.length;
    16         for(int i=1 ; i<n; i++){
    17             //将a[i]插入到a[i-1]、a[i-2]、a[i-3]...之中
    18             for(int j= i; j>0 && less(a[j],a[j-1]);j--)
    19                 exch(a,j,j-1);
    20         }
    21     }
    22     @SuppressWarnings("unchecked")
    23     private static boolean less(Comparable v, Comparable w){
    24         return v.compareTo(w) < 0;
    25     }
    26     private static void exch(Comparable[] a, int i, int j){
    27         Comparable t = a[i];
    28         a[i] = a[j];
    29         a[j] = t;
    30     }
    31     private static void show(Comparable[] a){
    32         for(int i=0; i<a.length; i++) StdOut.print(a[i] + " ");
    33         StdOut.println();
    34     }
    35     public static boolean isSorted(Comparable[] a){
    36         for(int i = 1; i < a.length; i++){
    37             if(less(a[i],a[i-1])) return false;
    38         }
    39         return true;
    40     }
    41     public static void main(String[] args){
    42         String[] a = new In().readAllStrings();
    43         sort(a);
    44         assert isSorted(a);
    45         show(a);
    46     }
    47 }
  • 相关阅读:
    【认证】Apache Shiro对象概念
    【Java基础】char
    【Http】keepalive
    【Nginx】Nginx处理请求过程
    【CSS】块级元素和行内元素
    未A,或用水法,或不熟的题
    2017初二上期中考试总结
    动态规划中的单调队列优化_补充
    NOIP2017普及组翻车记
    对拍模板
  • 原文地址:https://www.cnblogs.com/evasean/p/7232865.html
Copyright © 2020-2023  润新知