插入排序
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

浙公网安备 33010602011771号