zoukankan      html  css  js  c++  java
  • 插入排序——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 }
  • 相关阅读:
    心理学安全威胁
    设计模式是在运用构造定律
    分形理论
    构造定律
    [SOA]REST与SOA两种架构的异同比较
    加法是自然之道
    ES : 软件工程学的复杂度理论及物理学解释
    软件架构的灵活设计
    软件复杂度与结构:(影响复杂度的因素)
    socket 的通信过程
  • 原文地址:https://www.cnblogs.com/evasean/p/7232865.html
Copyright © 2011-2022 走看看