数据结构--排序之插入排序

/*
     * 插入排序O(N2)的运行时间
     * 思想是:若数组长度为N 那么把数组序号从1到N-1的值依次往前进行比较 这里需要一个for循环
     * 注意每个数在比较的时候它前面的数据都是已经排好序号的(因为从序号为1时就开始排序了)
     * 注意我们这里用类似堆中下浮和上浮的交换方法  把需要交换的数据拿出来 和前面的数据依次进行比较 如果拿出来的数据小了  这个当前位置直接被覆盖就可 这里又有一个嵌套的for循环
     */
    public static<T extends Comparable<? super T>> void insertSort(T[] t)
    {
        //因为最后插入值时候 需要在内部for循环的外面  所以j要在外部定义
        int j;
        for(int p=1;p<t.length;p++)
        {
            T temp=t[p];
            for(j=p;j>0 && temp.compareTo(t[j-1])<0;j--)
                t[j]=t[j-1];
            t[j]=temp;//检测到j--之后j==0 或者t[j]>=t[j-1] 直接给t[j]位置赋值 完成插入
        }
    }

public static void main(String[] args)
    {
        Integer[] t={45,3,23,1,1,13,33};
        //insertSort(t);
        shellSort(t);
        for(Integer tt:t)
            System.out.print(tt+"   ");
    }

郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。