· 66 · 工业仪表与 自动化装置 2012年第2期
一 种非循环2路插入排序算法
王 昱,杨小萍,陈延文,李德录
(天水师范学院 物理与信息科学学院,甘肃 天水741000)
摘要:提出了一种非循环2路插入排序算法,给出了算法思想及其实现,该算法与传统2路插
入排序算法相比,时间效率得到了改善,空间复杂度 由原来的0(n)降低为0(1)。
关键词:数据结构;2路插入排序;算法
中图分类号 :TP311 文献标志码 :A 文章编号:1000—0682(2012)02—0066—03
A non circular2-way insertion sortalgorithm
WANG Yu,YANG Xiaoping,CHEN Yanwen,LIDelu
(SchoolofPhysicsandInformationScience,TianshuiNormalUniversity,GansuTianshui741000,China)
Abstract:Inthispaper,anoncircular2-wayinsertionsortalgorithm isproposed,anditsalgorithm
principleandimplementationareintroduced.Thetimecomplexityofthis2-wayinsertionsortalgorithm is
betterthanoriginalones,andthespacecomplexityisreducedto0(1)fromtheoriginalO(n).
Keywords:datastructure;2-wayinsertionsort;algorithm
。 在实现算法时,并不将其看作一个循环向量。初
0 引言
始时,对顺序表 L.r的所有记录的关键字值进行比
直接插入排序算法是一种最简单的排序算法, 较,将关键字值最小的记录存放在 Lr[0]中,关键
它的时间复杂度为O(n),空间复杂度为O(1)…。 字值最大的记录存放在 L.r[n一1]中,这样就在顺
传统2路插入排序算法是对直接插入排序算法和折 序表 L.r的前后两端形成了2个只含有一个记录的
半插入排序算法的一种改进,额外开辟了n个记录 有序表L.r[0]~L.r[0]和L.r[n一1]~L.r[n一
的辅助空间(与待排序顺序表同类型的数组,并将 1],同时计算L.r[0]和L.r[n一1]的关键字值的中
其看作一个循环 向量),算法 的时 间复杂度是 问值midkey(即midkey:(L.r[0].key+L.r[n一
O(凡),空间复杂度为 O(n) 。 1].key)/2)。然后,置 i=1,=n一2,从P=i开始,
该文提出了一种非循环2路插人排序算法,即 到P 结束,根据 L.r[P].key与 midkey的比较结
将待排序顺序表并不看成循环向量,也不额外增加 果,将L_r[P]插入到前端或后端的有序表中。每次
凡个记录的辅助空问,只另设一个存放数据记录的 插入时,首先将L.r[P]暂存到临时存储单元 中,
临时存储单元,在原顺序表上进行排序。在一般情 然后让 (即原来的L.r[P])的关键字值与midkey
况下,其比较次数和移动记录次数都是直接插入排 进行比较,如果 的关键字值小于midkey,则将 插
序算法 的一半,虽然算法 的时间复杂度仍然是 入到前端的有序表L.r[0]~L.r[i一1]中,然后使 i
O(Z/),但与传统2路插入排序算法相比,该算法的 加 1