算法——插入排序

来源:互联网 发布:龙应台我的祖国 知乎 编辑:程序博客网 时间:2024/05/20 18:51
public class Insertion {    public static void sort(Comparable[] a){        for(int i = 0; i < a.length;i++){            for(int j = i; j > 0 && less(a[j],a[j-1]);j--){                echo(a,j,j-1);            }        }    }    public static boolean less(Comparable v,Comparable w){        return v.compareTo(w) < 0;    }    public static void echo(Comparable[] a,int i,int j){        Comparable t = a[i];        a[i] = a[j];        a[j] = t;    }    public static void show(Comparable[] a){        for(int i = 0; i < a.length;i++ ){            System.out.print(a[i] + " ");        }    }    public static boolean isSorted(Comparable[] a){        for(int i = 1; i < a.length;i++){            if(less(a[i],a[i-1])) return false;        }        return true;    }    public static Comparable[] Random(int num){        Integer[] a = new Integer[num];        Random rand = new Random();        for(int i = 0;i<num;i++){            a[i] =  rand.nextInt(10000);        }        return a;    }    public static void main(String[] args) {        Comparable[] a = Selection.Random(20000);        Long start = System.currentTimeMillis();        sort(a);        Long end = System.currentTimeMillis();        System.out.println("Time is " + (end - start));        /*show(a);*/    }}

思路:就像打牌,把牌插入合适的位置,从右到左,插入比某张牌大的位置,而刚开始,只有一张,默认为已经排好序了。

0 0