import java.util.ArrayList; import java.util.Random; /* * 插入排序,使用ArrayList */ public class InsertionSort { ArrayList<Integer> list; public InsertionSort(int num, int mod) {// num是待排序排序数字个数,产生的随机数在1到mod之间 list = new ArrayList<Integer>(num); System.out.println("排序之前的数组:"); for (int i = 0; i < num; i++) { list.add(new Random().nextInt(mod)); System.out.println("list[" + i + "]=" + list.get(i)); } } public void sort() { //排序 Integer tempInt; int MaxSize = 1; for (int i = 1; i < list.size(); i++) { tempInt = (Integer) list.remove(i); if (tempInt.intValue() >= ((Integer) list.get(MaxSize - 1)) .intValue()) { list.add(MaxSize, tempInt); MaxSize++; } else { for (int j = 0; j < MaxSize; j++) { if (((Integer) list.get(j)).intValue() >= tempInt .intValue()) { list.add(j, tempInt); MaxSize++; break; } } } } System.out.println("排序之后的数组:"); for (int i = 0; i < list.size(); i++) { System.out.println("list[" + i + "]=" + list.get(i)); } } public static void main(String[] args) { InsertionSort is = new InsertionSort(10, 100); is.sort(); } }
运行结果:
排序之前的数组:
list[0]=26
list[1]=63
list[2]=82
list[3]=41
list[4]=12
list[5]=76
list[6]=92
list[7]=75
list[8]=94
list[9]=74
排序之后的数组:
list[0]=12
list[1]=26
list[2]=41
list[3]=63
list[4]=74
list[5]=75
list[6]=76
list[7]=82
list[8]=92
list[9]=94