[发明专利]一种快速排序、取中值的方法在审
申请号: | 201811418086.4 | 申请日: | 2018-11-26 |
公开(公告)号: | CN111221506A | 公开(公告)日: | 2020-06-02 |
发明(设计)人: | 李洪涛;张瑜楹 | 申请(专利权)人: | 北京华航无线电测量研究所 |
主分类号: | G06F8/20 | 分类号: | G06F8/20 |
代理公司: | 暂无信息 | 代理人: | 暂无信息 |
地址: | 100013 *** | 国省代码: | 北京;11 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 快速 排序 中值 方法 | ||
本发明一种快速排序的方法,包括:步骤1、根据待排序数据序列尺寸,设置序列数据比较记录数组,序列排序位置记录数组;步骤2、从序列第一个数据开始依次向后进行比较时为大的次数或者为小的次数;步骤3、比较中为大的次数即为数据在序列中升序排序后的位置,将此数值赋值给序列排序位置记录数组,完成排序。步骤4,若需取中值,则在比较过程中增加判断比较为大的次数的数值,当数值为数据序列尺寸的一半时,对应的数据即为数据序列的中值。可快速实现数据排序、取中值的功能。
技术领域
本发明属于软件技术领域,具体涉及一种快速排序取中值的方法。
背景技术
软件设计经常需要用到排序,取中值等运算。排序过程需要对数据序列的每个数据进行比较判断,当数据序列的数据量较大时,排序运算的效率也会对系统效率产生影响。
常用的排序方法,如冒泡法,选择法等,需要在运算过程中将数据序列中的数据位置进行调换。针对一事物或对象描述往往用到一系列多个特征值的组合,依照其中某个特征值进行排序的处理,有时还不希望改变原事物或对象的原有位置,此时,冒泡法,选择法,就不太适用。
发明内容
针对上述问题,本发明提供一种快速排序取中值的方法,可快速实现数据排序、取中值的功能。
本发明一种快速排序的方法,包括:
步骤1、根据待排序数据序列尺寸,设置序列数据比较记录数组,序列排序位置记录数组;
步骤2、从序列第一个数据开始依次向后进行比较时为大的次数或者为小的次数;
步骤3、比较中为大的次数即为数据在序列中升序排序后的位置;比较中为小的次数即为数据在序列中降序排序后的位置,将此数值赋值给序列排序位置记录数组,完成排序。
步骤4,若需取中值,则在比较过程中增加判断比较为大的次数的数值,当数值为数据序列尺寸的一半时,对应的数据即为数据序列的中值。
本发明在排序计算过程中,记录每个数据为大或者为小的次数,得到数据在排序后序列中的位置。利用记录序列位置的方法实现排序,在不挪动原始数据序列的情况下,实现序列排序功能。避免大量数据进行对换移位。不仅可以提高运算速度,还可以减少内存占用。对提高系统性能有重要意义。
附图说明
图1为本发明快速排序法流程图;
图2为本发明快速排序法流程图;
图3为本发明利用快速排序法取中值的流程图;
具体实施方式
下面结合附图对本发明作进一步的说明。
本发明包括以下步骤:
步骤1、根据待排序数据序列尺寸,设置序列数据比较记录数组,序列排序位置记录数组;
步骤2、从序列第一个数据开始依次向后进行比较时为大的次数或者为小的次数;
步骤3、比较中为大的次数即为数据在序列中升序排序后的位置,将此数值赋值给序列排序位置记录数组,完成排序。
步骤4、若需取中值,则在比较过程中增加判断比较为大的次数的数值,当数值为数据序列尺寸的一半时,对应的数据即为数据序列的中值。
通过判断数据比较结果为大或者为小的次数,选取序列中值。运算速度与中值在原序列中的位置直接相关,若中值位于序列前部,后续比较,计算都可直接省去,可大大减少运算时间。
当数据量大,或中值在数据的前段,效率非常高,是普通方法的一百倍以上。
上述具体实施方式仅用于解释和说明本发明的技术方案,但并不能构成对权利要求的保护范围的限定。本领域技术人员应当清楚,在本发明的技术方案的基础上做任何简单的变形或替换而得到的新的技术方案,均将落入本发明的保护范围之内。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于北京华航无线电测量研究所,未经北京华航无线电测量研究所许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201811418086.4/2.html,转载请声明来源钻瓜专利网。