插入排序小结
Posted gali
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了插入排序小结相关的知识,希望对你有一定的参考价值。
1.插入排序
思路:
如数组:5 9 3 2 8 7 10
默认第一个元素为有序,插入排序9,9大于5,顺序不变。插入排序3,则9>3,5>3,则把9赋值给3,把5赋值给9,3赋值给5.也就是5,9后移,插入3.
如此循环。需要循环n-1,则完成排序。
排序图:
Java代码实现
/** * 插入排序 */ public void InsertSort(int[] arr) { int i, j; int n = arr.length; int target; /** * 假定第一个元素已经在正常排序,这时只需要插入排序n-1次 */ for (i = 1; i < n; i++) { j = i; /** * 把当前需要插入排序的值,赋值给targer */ target = arr[i]; /** * 如果targer小于他前面的元素,则前面的元素后移,直到targer不小于前面的元素时, * 并记录这时的j */ while (j > 0 && target < arr[j - 1]) { arr[j] = arr[j - 1]; j--; } /** * targer赋值于a[j] */ arr[j] = target; } }
时间复杂度
插入排序在有序时,时间复杂度为O(N),对于随机数组时间复杂度为O(N^2)
以上是关于插入排序小结的主要内容,如果未能解决你的问题,请参考以下文章