赞
踩
直接插入排序基本思想是每一步将一个待排序的记录,插入到前面已经排好序的有序序列中去,直到插完所有元素为止。
public static void insertSort(int[] array){ for (int i = 1; i < array.length; i++) { for (int j = i ; j > 0; j--) { if( array[j] < array[j-1] ){ int temp = array[j]; array[j] = array[j -1]; array[j -1] = temp; } } //输出每一趟的结果 System.out.print("第" + i+ "趟:"); display(array); } } public static void main(String[] args) { int[] a = new int[]{5, 7, 9, 8, 6, 3, 4, 2, 1}; insertSort(a); System.out.print("排序后:"); display(a); }
第1趟:5 7 9 8 6 3 4 2 1
第2趟:5 7 9 8 6 3 4 2 1
第3趟:5 7 8 9 6 3 4 2 1
第4趟:5 6 7 8 9 3 4 2 1
第5趟:3 5 6 7 8 9 4 2 1
第6趟:3 4 5 6 7 8 9 2 1
第7趟:2 3 4 5 6 7 8 9 1
第8趟:1 2 3 4 5 6 7 8 9
排序后:1 2 3 4 5 6 7 8 9
直接插入排序算法是稳定的排序算法
时间复杂度O(n2)
最好情况下,序列已经是升序排列了,需要进行的比较操作为(n-1)次。最坏情况下,序列是降序排列,那么此时需要进行的比较共有n(n-1)/2次。插入排序的赋值操作是比较操作的次数加上 (n-1)次。综上,插入排序算法的时间复杂度为O(n2)
空间复杂度O(1)
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。