排序算法--插入排序
继续备忘一个简单的排序算法--插入排序,并且仍旧对整数组成的数组进行升序排序。 原理: 同样基于元素比较进行排序。进行第N趟遍历的时候,前面N-1个元素已经有序,只需要从右向左逐个和已经排好序的元素比较,去寻找第N个元素可以插入的位置,找到之后插入即可。遍历N-1趟。 步骤: 初始化遍历指针i,j。i代表每次需要拿去插入的元素的下标,j遍历已经排过序的部分,找到应该插入的位置插入。直到i代表将所有元素都插入到应该插入的位置了。 分析: 时间复杂度方面,需要遍历n次,最好情况是已经升序排好,此时不需要移动元素,最坏的也就是逆序的时候,需要移动n(n-1)/2次,平均时间复杂度为O(n^2)。它也是原地排序。稳定性方面,因为每次插入的时候,只有前面的元素大于被插入元素才进行后移,所以是稳定的。 代码展示 : public class InsertSort { public static void main(String[] args){ int[] array = {7, 11, 5, 8, 7, 2, 10, 1}; System.out.print("待排序数组:");//打印排序之前的样子 for(int k : array) System.out.print(k + " "); System.out.println(); sort(array);//排序之中 System