插入排序算法
插入排序算法: 通过构建有序序列,对于未排序数据,在已排序序列中从后向前扫描,找到相应的位置并插入。如果输入数组已经是排好序的话,插入排序出现最佳情况,其运行时间是输入规模的一个线性函数。如果输入数组是逆序排列的,将出现最坏情况。平均情况与最坏情况一样,其时间代价是(n2)。
List<Integer> list2 = new ArrayList<Integer>();
list2.add(8);
list2.add(7);
list2.add(10);
list2.add(15);
list2.add(5);
list2.add(16);
list2.add(233);
list2.add(11);
list2.add(21);
list2.add(1);
list2.add(67);
list2.add(3);
list2.add(31);
list2.add(999);
list2.add(109);
// 插入排序
insertSort(list2);
// 插入排序
public static void insertSort(List array) {
System.out.println("排序前:" + array.toString());
for (int i = 1; i < array.size(); i++) {
int insertNumber = (Integer) array.get(i);
int insertIndex = i - 1;
while (insertIndex >= 0 && insertNumber < (Integer) array.get(insertIndex)) {
System.out.println("处理前:" + array.toString());
array.set(insertIndex + 1, array.get(insertIndex));
System.out.println("处理后:" + array.toString());
insertIndex--;
}
array.set(insertIndex + 1, insertNumber);
}
System.out.println("排序后:" + array.toString());
}