标签:oid text 带来 cti thml 也有 code img 算法复杂度
一般来说,插入排序都采用in-place在数组上实现。具体算法描述如下:
如果目标是把n个元素的序列升序排列,那么采用插入排序存在最好情况和最坏情况。最好情况就是,序列已经是升序排列了,在这种情况下,需要进行的比较操作需{\displaystyle n-1}次即可。最坏情况就是,序列是降序排列,那么此时需要进行的比较共有{\displaystyle {\frac {1}{2}}n(n-1)}
次。插入排序的赋值操作是比较操作的次数减去{\displaystyle n-1}
次,(因为{\displaystyle n-1}
次循环中,每一次循环的比较都比赋值多一个,多在最后那一次比较并不带来赋值)。平均来说插入排序算法复杂度为{\displaystyle O(n^{2})}
。因而,插入排序不适合对于数据量比较大的排序应用。但是,如果需要排序的数据量很小,例如,量级小于千;或者若已知输入元素大致上按照顺序排列,那么插入排序还是一个不错的选择。 插入排序在工业级库中也有着广泛的应用,在STL的sort算法和stdlib的qsort算法中,都将插入排序作为快速排序的补充,用于少量元素的排序(通常为8个或以下)。
public class Insert { /** * 插入排序 * @param array */ public static void insert(int[] array) { if(null == array || array.length < 2) { return; } for(int i=1; i<array.length; i++) { int temp = array[i]; int j; for(j=i-1;j>=0&&array[j]>temp; j--) { array[j+1] = array[j]; } array[j+1] = temp; } } }
标签:oid text 带来 cti thml 也有 code img 算法复杂度
原文地址:https://www.cnblogs.com/sunjie-one/p/8762143.html