插入排序

package eleven;

/**
 * 插入排序
 * 
 * @author li
 * 
 */
public class InsertSort {
    /**
     * 
     * @param num
     *            带排序数组
     * @return
     */
    public static int[] insertSort(int[] num) {
        int len = num.length;
        for (int i = 1; i < len; i++) {
            for (int j = i; j > 0; j--) {
                if (num[j - 1] > num[j]) {
                    int tmp = num[j - 1];
                    num[j - 1] = num[j];
                    num[j] = tmp;
                }

            }

        }
        return num;

    }

    public static int[] insertSortBetter(int[] num) {
        int len = num.length;
        for (int i = 1; i < len; i++) {
            int tmp = num[i];
            int j = i;
            for (; j > 0 && num[j - 1] > tmp; j--) {
                num[j] = num[j - 1];
            }
            num[j] = tmp;

        }
        return num;

    }

    public static void printNumArray(int[] num) {
        for (int i = 0; i < num.length; i++) {
            System.out.println(num[i]);
        }

    }

    public static void main(String[] args) {
        int[] num = new int[10000];
        for (int i = 0; i < 10000; i++) {
            num[i] = (int) (Math.random() * 1000);
        }
        long start = System.currentTimeMillis();
        insertSort(num);
        long end = System.currentTimeMillis();
        System.out.println(end - start);
        start = System.currentTimeMillis();
        insertSort(num);
        end = System.currentTimeMillis();
        System.out.println(end - start);

    }
}

 排序10000个数所用的时间分别为:

92
40

posted @ 2016-01-17 16:46  程序猿进化之路  阅读(81)  评论(0)    收藏  举报