public class SortDemo {
public static void main(String[] args) {
int[] a = creatInt2();
insertionSort(a);
}
// 正序
private static int[] creatInt() {
int[] a = new int[100001];
for (int i = 0; i < 100001; i++) {
a[i] = i;
}
return a;
// 开始时间:1525762744961,结束时间:1525762744967,用了多长时间:6
}
// 反序
private static int[] creatInt2() {
int[] a = new int[100001];
for (int i = 100000, j = 0; j < 100001; i--, j++) {
a[j] = i;
}
return a;
// 开始时间:1525762726900,结束时间:1525762732508,用了多长时间:5608
}
// 插入排序
public static void insertionSort(int[] a) {
Date d = new Date();
long start = d.getTime();
int j;
for (int p = 1; p < a.length; p++) {
Integer temp = a[p];
for (j = p; j > 0 && temp.compareTo(a[j - 1]) < 0; j--)
a[j] = a[j - 1]; // 如果之前的数比后面的数大,就将之前的数右移
// 在极端条件下(反序),每个都会迭代p次,O(N^2),在理想状态下(正序)O(N)
a[j] = temp;// 将要比较的数插入到适合它的位置
}
/*
* for (int i : a) { System.out.print(i+","); } System.out.println();
*/
Date d2 = new Date();
long end = d2.getTime();
System.out.println("开始时间:" + start + ",结束时间:" + end + ",用了多长时间:" + (end - start));
}
}
06-30
239
09-13
327