一种快速Top-N排序方法技术

技术编号:33557518 阅读:10 留言:0更新日期:2022-05-26 22:54
本发明专利技术提供一种Top

【技术实现步骤摘要】
一种快速Top

N排序方法


[0001]本专利技术涉及数据统计和处理
,特别涉及一种快速Top

N排序方法。

技术介绍

[0002]随着科学技术的快速发展以及移动互联网的普及,各行各业中均开始使用互联网相关的技术。随着各行各业在日常运作中对互联网的使用,每天将产生海量蕴含丰富信息的数据,并且这些数据可能具有较高的应用价值。因此,需要对这些数据进行处理分析,以挖掘这些数据的价值。
[0003]目前,对海量数据进行处理分析,可以采用多种方法,如数据排序分析、数据建模分析、数据统计分析等技术方法。其中,对海量数据中的对象进行排序,以获取海量数据中有价值的数据信息是一种常用的技术手段。但是这些海量数据中,并非每个数据的价值均相同,如积分排名中的前10名,全国污染指数最低的前10名,人均产值最高的城市前10名,这些数据将比其他的数据具有更大的意义,因此,我们需要采用排序的方法从海量数据中挑选出这些数据的Top

N。
[0004]Top

N的含义为依照排序方式输出前N个对象,其中N为非零自然数。当排序方式为升序排列时,Top

N的含义为输出数据值最小的前N个对象;当排序方式为降序排列时,Top

N的含义为输出数据值最大的前N个对象。Top

N的排序方法目前常用在大数据对比、底库搜素等领域,如人脸比对、车辆比对等。通过提取目标的特征值,将特征与底库的样本特征进行相似度计算,再对相似对进行排序找出最接近的N个目标。目前人员比对底库样本数量已经高达亿量级,因此,Top

N排序方法的效率很大程度上决定了整个比对算法的效率。
[0005]在专利CN110262770A《一种按位的排序方法》中,提供一种按位的排序方法,在排序过程中均按照位数和每一个位数上的数字来进行排序,但是在该方法中,仍然需要对所有的样本进行排序,时间复杂度将会随着样本的增多而增大。
[0006]在专利CN105574344A《一种金字塔排序算法》中,先找到一个为2的整数次幂的整数,然后把要排序的n个数据放入b数组中,再逐一比较b数组中相邻数据,将相对大数的下标放入c数组的m/2

m

1单元中;然后在逐个比较b[c[m/2]]‑
b[c[m

1]]中的相邻数据,并将相对大数的下标放入c[m/2

1]‑
c[m/4]中,依次类推,最后整个b数组最大数数据的下标就会被放入c[1]中,然后不断找出b数组中的最大值,完成排序。该专利中提供的方法具有如下缺点:(1)在该方法中,仍然需要对所有的样本进行排序;(2)该方法在排序序列基本有序的情况下,其排序速度明显优于快速排序,但是在实际应用中,并不是每个排序序列都是基本有序的,因此,该方法的应用场景较为有限,并不能在所有的Top

N排序中均能达到提速的效果。
[0007]目前现有的Top

N排序方法共有的缺陷是:Top

N排序最终有效的数据集中包含的数据只有N个,但是参与排序的数据却是整个数据集中的所有样本,当总样本的数量M远大于N时,排序计算中绝大部分的计算都是无效的,这些无效的计算将极大地降低Top

N排序方法的效率。
[0008]因此,亟需一种快速的Top

N排序方法,其能在对任何数据进行Top

N排序时,均能提高排序方法的效率。

技术实现思路

[0009]为了解决上述技术问题,本专利技术提供一种快速Top

N排序方法。该方法通过先提取有效样本,再对有效样本进行排序找到Top

N数据的方法,基本上去除了冗余的排序的计算,从而极大地提高了Top

N排序方法的效率,尤其是对于样本数量较大但是有效数据N较小的情况,该方法将极大地减少了参与排序的样本数据,提高了排序方法的计算效率。
[0010]为了实现上述专利技术目的,本专利技术提供一种Top

N排序方法,其包括以下步骤:数据预处理,所述数据预处理步骤用于确定直方图中区域的个数和区域的范围;直方图计算,所述直方图计算步骤用于确定每个直方图区域中的样本数;在进行直方图计算时,读取每个样本值的大小,并根据样本值的大小判定该样本哪个直方图区域中,该样本落在哪个bin范围内,将该bin上的样本数加1;通过所述直方图计算步骤中的计算结果,确定Top

N的有效样本区域;在确定Top

N的有效样本区域时,计算方法如下:计算从第m个bin到第n个bin的样本数的总数Sum,在Top

N的排序中,m或者n其中之一是确定的,第m个bin为最小bin或者第n个bin为最大bin,然后按照顺序对各个bin中的样本数相加,直到样本数的总数Sum大于等于N,确定此时的n或者m值;则第m个bin到第n个bin中的值为有效样本区域;提取有效样本;以及对有效样本进行Top

N排序。
[0011]采用本专利技术中提供的Top

N排序方法,通过先提取有效样本,再对有效样本进行排序找到Top

N数据的方法,基本上去除了冗余的排序的计算,从而极大地提高了Top

N排序方法的效率,尤其是对于样本数量较大但是有效数据N较小的情况,该方法将极大地减少了参与排序的样本数据,提高了排序方法的计算效率。
[0012]优选地,在进行最大值排序时,确定Top

N的有效样本区域时,从最大的bin向最小的bin方向上对每个bin上的样本个数进行累加,直到累加总数大于等于N,则该区间范围则为有效样本区域。
[0013]优选地,在进行最小值排序时,确定Top

N的有效样本区域时,从最小的bin向最大的bin方向上对每个bin上的样本个数进行累加,直到累加总数大于等于N,则该区间范围则为有效样本区域。
[0014]优选地,在所述数据预处理步骤中确定直方图中区域的个数时,根据样本数据的取值范围而定,样本数据的取值范围越大,直方图中区域的个数越多。直方图中区域的个数越多,在后续步骤中寻找到的有效区域将越精确(即有效区域中的数据量与有效数据量N越接近),在排序时进行的冗余计算将越少。
[0015]优选地,在所述数据预处理步骤中确定直方图中区域的个数时,根据有效数据量N而定,当有效数据量N越大时,直方图中区域的个数越少。
[0016]优选地,在提取有效样本时,对所有样本进行遍历,将样本值落在有效样本区域内的样本提取出来。
[0017]优选地,在对有效样本进行Top

N排序时,采用以下排序方法其中之一:冒泡排序、选择排序、快速排序和堆排序本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种Top

N排序方法,其特征在于,所述Top

N排序方法包含以下步骤:数据预处理,所述数据预处理步骤用于确定直方图中区域的个数和区域的范围;直方图计算,所述直方图计算步骤用于确定每个直方图区域中的样本数;在进行直方图计算时,读取每个样本值的大小,并根据样本值的大小判定该样本哪个直方图区域中,该样本落在哪个bin范围内,将该bin上的样本数加1;通过所述直方图计算步骤中的计算结果,确定Top

N的有效样本区域;在确定Top

N的有效样本区域时,计算方法如下:计算从第m个bin到第n个bin的样本数的总数Sum,在Top

N的排序中,m或者n其中之一是确定的,第m个bin为最小bin或者第n个bin为最大bin,然后按照顺序对各个bin中的样本数相加,直到样本数的总数Sum大于等于N,确定此时的n或者m值;则第m个bin到第n个bin中的值为有效样本区域;提取有效样本;以及对有效样本进行Top

N排序。2.根据权利要求1中所述的Top

N排序方法,其特征在于,在进行最大值排序时,确定Top

N的有效样本区域时,从最大的bin向最小的bin方向上对每个bin上的样本个数进行累加,直到累加总数大于等于N,则该区间范围则为有效样本区域。3.根据权利要求1中所述的Top

N排序方法,其特征在于,在进行最小值排序时,确定Top

N的有效样本区域时,从最小的...

【专利技术属性】
技术研发人员:朱鹏郑星剑方伟
申请(专利权)人:浙江芯昇电子技术有限公司
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1