[发明专利]双链表折半插入排序方法、装置、设备及存储介质在审
| 申请号: | 201911403421.8 | 申请日: | 2019-12-30 | 
| 公开(公告)号: | CN111142839A | 公开(公告)日: | 2020-05-12 | 
| 发明(设计)人: | 王防修 | 申请(专利权)人: | 武汉轻工大学 | 
| 主分类号: | G06F7/24 | 分类号: | G06F7/24 | 
| 代理公司: | 深圳市世纪恒程知识产权代理事务所 44287 | 代理人: | 方昊佳 | 
| 地址: | 430023 湖北省武*** | 国省代码: | 湖北;42 | 
| 权利要求书: | 查看更多 | 说明书: | 查看更多 | 
| 摘要: | |||
| 搜索关键词: | 双链表 折半 插入 排序 方法 装置 设备 存储 介质 | ||
1.一种双链表折半插入排序方法,其特征在于,所述方法包括:
获取用户输入的待排序双链表;
根据预设划分规则对所述待排序双链表进行区域划分,获得有序链表区域和无序链表区域;
从所述有序链表区域中确定待比对数据,并从所述无序链表区域中选取待插入数据;
将所述待插入数据与所述待比对数据进行数据大小比较;
根据比较结果确定所述待插入数据对应的目标插入位置,并根据所述目标插入位置将所述待插入数据插入所述有序链表区域,获得初始有序链表区域;
判断所述无序链表区域中对应的数据是否为空;
若所述无序链表区域中对应的数据为空,则将所述初始有序链表区域作为目标有序双链表。
2.如权利要求1所述的方法,其特征在于,所述根据预设划分规则对所述待排序双链表进行区域划分,获得有序链表区域和无序链表区域的步骤,包括:
根据升序排序规则将所述待排序双链表的链头所对应的数据划分为有序链表区域,并将所述待排序双链表中剩余的数据划分为无序链表区域。
3.如权利要求1所述的方法,其特征在于,所述有序链表区域包括首指针和尾指针;
所述从所述有序链表区域中确定待比对数据的步骤,包括:
根据所述首指针和尾指针分别确定首指针位置和尾指针位置;
根据所述首指针位置和所述尾指针位置计算中间指针位置;
根据所述中间指针位置确定待比对数据。
4.如权利要求3所述的方法,其特征在于,所述根据比较结果确定所述待插入数据对应的目标插入位置,并根据所述目标插入位置将所述待插入数据插入所述有序链表区域,获得初始有序链表区域的步骤,包括:
在所述待插入数据小于所述待比对数据时,将所述尾指针位置移动至所述中间指针位置的前一位,获得当前尾指针位置;
根据所述首指针位置和所述当前尾指针位置计算当前中间指针位置;
判断所述首指针位置与所述当前中间指针位置是否一致;
若所述首指针位置与所述当前中间指针位置一致,则获取所述首指针位置对应的数据;
将所述待插入数据与所述首指针位置对应的数据进行数据大小比较;
在所述待插入数据大于所述首指针位置对应的数据时,将所述首指针位置后移一位,获得当前首指针位置,以使所述当前首指针位置与所述当前尾指针位置一致;
获取所述当前尾指针位置对应的数据;
将所述待插入数据与所述当前尾指针位置对应的数据进行数据大小比较;
在所述待插入数据小于所述当前尾指针位置对应的数据时,将所述当前尾指针位置前移一位,获得目标尾指针位置;
判断所述当前首指针位置是否在所述目标尾指针位置之后;
若所述当前首指针位置在所述目标尾指针位置之后,则将所述待插入数据插入所述当前首指针位置与所述目标尾指针位置之间对应的中间位置,并获得初始有序链表区域。
5.如权利要求4所述的方法,其特征在于,所述判断所述首指针位置与所述当前中间指针位置是否一致的步骤之后,还包括:
若所述首指针位置与所述当前中间指针位置不一致,则返回所述根据所述首指针位置和所述尾指针位置计算中间指针位置的步骤。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于武汉轻工大学,未经武汉轻工大学许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201911403421.8/1.html,转载请声明来源钻瓜专利网。





