在之前的项目中,用到了插入集,具体的需求就是:在稀轴排花中,每个排花方法都有一个评价(方法优劣),找出最优的10个排花方法。插入集就是根据插入排序,在添加元素时,先搜索它的最终位置,然后插入,当所有元素插入完毕后,得到一个排序的集合。适用于的模型:在N个数中找出最大或最小的K个(K个元素需要排序)。只需要设定插入集的容量为K并且定长,然后遍历这N个元素,将他们添加进插入集,最后得到一个排好序的集合。
实际上,插入集适用的问题同样可以用堆来解决,并且在输入规模比较大时堆的效率更高。但是当输入规模较小时,插入集比较合适。如果最后获得集合是需要排序的,堆还需要进行一下处理。
插入集的时间损耗主要是在搜索插入位置,假设集合大小为N,插入集大小为K,则最坏情况下时间复杂度为O(NK),但是当K较小时,性能还是不错的。