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 }
  • 相关阅读:
    asp网站中使用百度ueditor教程
    URL特殊字符需转义
    织梦DEDE文章列表前面自动加递增数字标签
    dede修改templets模板文件夹后,出现“无法在这个位置找到: ”错误的解决办法
    Mysql命令大全
    成功,来自有梦想,肯坚持
    飞天侠模板的相关修改教程
    bios自检时间长,显示0075错误
    电脑桌面假死解决方法
    没有哪个人是随随便便成功的
  • 原文地址:https://www.cnblogs.com/evasean/p/7232865.html
Copyright © 2011-2022 走看看