一种用于排序参数的数据排序方法与设备与流程

文档序号:30437960发布日期:2022-06-17 21:02阅读:132来源:国知局
一种用于排序参数的数据排序方法与设备与流程

1.本技术涉及计算机技术领域,尤其涉及一种用于排序参数的数据排序技术。


背景技术:

2.数据排序方法在数据统计、成绩排名、策略优选、遗传算法、接口签名等多种领域均具有重要应用,在大数据时代面临着对海量数据进行排序,因此,对排序的性能提出了更高的要求。
3.现有的排序方式大多数是经过多次递减范围的遍历再加上两两比较而进行的排序,虽然递减范围的方式有不一样,但难免会出现多次冗余的比较过程,这些冗余的比较操作使得对海量数据进行排序的时间开销大大增加,降低了排序的性能与速度。


技术实现要素:

4.本技术的目的是提供一种用于排序参数的数据排序方法与设备。
5.根据本技术的一个方面,提供了一种用于排序参数的数据排序方法,其中,所述方法包括:
6.a获取待排序的排序参数,并建立与所述排序参数总数匹配的结果存储空间,其中,所述结果存储空间用以顺序存储所有排序参数;
7.b按照预设的预测方法及切片数确定所有排序参数的索引值,其中所述索引值代表该排序参数在所述结果存储空间的预测位置;
8.c将所述索引值相同的所述排序参数存放在一个片段中,以生成多个与所述索引值对应的片段;
9.d根据所述索引值顺序依次将该索引值对应的片段中的所述排序参数写入与该索引值对应的所述结果存储空间的预测位置。
10.可选地,所述步骤d包括:
11.根据所述索引值顺序遍历各索引值对应的片段,当该索引值对应的片段符合预设的结果写入规则,将该索引值对应的片段中的所述排序参数写入与该索引值对应的所述结果存储空间的预测位置。
12.可选地,所述步骤d包括:
13.根据所述索引值顺序遍历各索引值对应的片段,当所述片段不符合预设的结果写入规则,将所述所有排序参数更新为该片段中的排序参数,并重复步骤b、c及d。
14.进一步地,所述将该索引值对应的片段中的所述排序参数写入与该索引值对应的所述结果存储空间的预测位置包括:
15.设置初始值为所述结果存储空间首地址的结果存储标记;
16.将该索引值对应的片段中的所有排序参数从所述结果存储标记开始顺序写入所述结果存储空间中;
17.将所述结果存储标记后移至所述结果存储空间的首个未写入的地址。
18.进一步地,当所述结果存储空间以结果数组的方式表示,所述方法还包括:
19.将所述待排序的排序参数存储在待排序数组中;
20.其中,所述建立与所述排序参数总数匹配的结果存储空间包括:建立数组长度与所述排序参数总数相等的结果数组。
21.优选地,所述步骤c还包括:
22.设置数组长度等于预设切片数的切片数组,其中,所述切片数组为二维数组;
23.将所述片段按照其对应的索引值顺序以数组的形式存放在所述切片数组中。
24.进一步地,所述将所述片段按照其对应的索引值顺序以数组的形式存放在所述切片数组中包括:
25.将所述片段以数组的形式存放在数组下标等于该片段对应的索引值的切片数组元素中。
26.进一步地,所述根据所述索引值顺序遍历各索引值对应的片段包括:
27.按照所述切片数组的数组下标顺序遍历所述切片数组中的各个片段。
28.优选地,其中,所述结果存储标记的初始值为所述结果数组中下标为0的数组元素。
29.进一步地,所述将所述结果存储标记后移至所述结果存储空间的首个未写入的地址包括:
30.将所述结果存储标记对应的数组下标与写入的所述片段的排序参数个数进行累加,将其结果作为更新后的所述结果存储标记对应的数组下标。
31.优选地,所述符合预设的结果写入规则包括:
32.所述片段中的排序参数总数不超过2个。
33.进一步地,所述按照预设的预测方法及切片数依次确定所述待排序数组中各个排序参数对应的索引值包括:
34.获取所述待排序数组的最大值maxvalue、最小值minvalue、预设的切片数n及该排序参数值value,则该排序参数所处的片段的宽度step=(maxvalue-minvalue)/(n-1);
35.则该排序参数的索引值index=math.floor((value-minvalue)/step)。
36.根据本技术的另一方面,还提供了一种计算机可读介质,其上存储有计算机可读指令,所述计算机可读指令可被处理器执行以实现如前述方法的操作。
37.根据本技术的再一方面,还提供了一种排序参数的数据排序设备,其中,该设备包括:
38.一个或多个处理器;以及
39.存储有计算机可读指令的存储器,所述计算机可读指令在被执行时使所述处理器执行上述方法的操作。
40.与现有技术相比,本技术通过获取待排序的排序参数,并建立与所述排序参数总数匹配的结果存储空间,其中,所述结果存储空间用以顺序存储所有排序参数;按照预设的预测方法及切片数确定所有排序参数的索引值,其中所述索引值代表该排序参数在所述结果存储空间的预测位置;将所述索引值相同的所述排序参数存放在一个片段中,以生成多个与所述索引值对应的片段;根据所述索引值顺序依次将该索引值对应的片段中的所述排序参数写入与该索引值对应的所述结果存储空间的预测位置。通过该方式预测各个排序参
数的大致排序位置,从而减少了在确定排序位置过程中的冗余比较过程,因此,提高了排序速度,大大减少了排序过程中因冗余比较造成的时间消耗。
附图说明
41.通过阅读参照以下附图所作的对非限制性实施例所作的详细描述,本发明的其它特征、目的和优点将会变得更明显:
42.图1示出根据本技术一个方面的一种用于排序参数的数据排序方法流程图;
43.图2示出根据本技术一个优选实施例的一种用于排序参数的数据排序方法流程图。
44.附图中相同或相似的附图标记代表相同或相似的部件。
具体实施方式
45.下面结合附图对本发明作进一步详细描述。
46.在本技术一个典型的配置中,终端、服务网络的设备和可信方均包括一个或多个处理器(cpu)、输入/输出接口、网络接口和内存。
47.内存可能包括计算机可读介质中的非永久性存储器,随机存取存储器(ram)和/或非易失性内存等形式,如只读存储器(rom)或闪存(flash ram)。内存是计算机可读介质的示例。
48.计算机可读介质包括永久性和非永久性、可移动和非可移动媒体可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机的存储介质的例子包括,但不限于相变内存(pram)、静态随机存取存储器(sram)、动态随机存取存储器(dram)、其他类型的随机存取存储器(ram)、只读存储器(rom)、电可擦除可编程只读存储器(eeprom)、快闪记忆体或其他内存技术、只读光盘只读存储器(cd-rom)、数字多功能光盘(dvd)或其他光学存储、磁盒式磁带,磁带磁盘存储或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。按照本文中的界定,计算机可读介质不包括非暂存电脑可读媒体(transitory media),如调制的数据信号和载波。
49.为更进一步阐述本技术所采取的技术手段及取得的效果,下面结合附图及较佳实施例,对本技术的技术方案,进行清楚和完整的描述。
50.图1示出本技术一个方面提供的一种用于排序参数的数据排序方法,其中,该方法包括:
51.s11获取待排序的排序参数,并建立与所述排序参数总数匹配的结果存储空间,其中,所述结果存储空间用以顺序存储所有排序参数;
52.s12按照预设的预测方法及切片数确定所有排序参数的索引值,其中所述索引值代表该排序参数在所述结果存储空间的预测位置;
53.s13将所述索引值相同的所述排序参数存放在一个片段中,以生成多个与所述索引值对应的片段;
54.s14根据所述索引值顺序依次将该索引值对应的片段中的所述排序参数写入与该索引值对应的所述结果存储空间的预测位置。
55.本技术提供用于排序参数的数据排序方法可用于海量数据统计等领域。具体地,
可应用于对电子政务云中全部告警日志的统计排序。电子政务云结合了云计算技术的特点,对政府管理和服务职能进行精简、优化、整合,并通过信息化手段在政务上实现各种业务流程办理和职能服务,为政府各级部门提供可靠的基础it服务平台。而告警日志作为系统行为的重要记录,其记录的内容包含了系统全部的内部错误信息、块损坏信息、死锁错误信息、数据库操作、数据文件操作、表空间操作、进程调度信息、物化视图错误、参数修改信息等,并且在电子政务云环境中可对告警级别、告警状态、监控对象、资源类型、云账号、所属组织、告警时间等信息进行自定义的设置,以实现告警日志对电子政务云环境的全操作记录,而在这个过程中,对告警日志进行统计排序是实现数据库维护及网络安全维护等环节的重要前提。
56.在此,应明确,本技术提供用于排序参数的数据排序方法同样可用于成绩排名、策略优化、遗传算法优化及接口签名等具体的领域,本技术不对应用的具体场景做限制性说明,可以应用本技术所述方法的应用场景均在本技术的保护范围中。
57.以对电子政务云中全部告警日志进行统计排序为例,告警日志具有“消息内容”、“告警级别”、“告警状态”、“监控对象”、“资源类型”、“云账号”、“所属组织”及“告警时间”等字段信息,用户可选择排序的字段,以按照“告警时间”排序为例,将“告警时间”转换为可进行比较大小的排序参数,按照如下所述的方法,对排序参数进行排序,再将按顺序排序的排序参数转换为“告警时间”,最后将“告警时间”的排序顺序作为告警日志的显示顺序进行汇总显示。
58.在该方法中,s11获取待排序的排序参数,并建立与所述排序参数总数匹配的结果存储空间,其中,所述结果存储空间用以顺序存储所有排序参数。
59.在此,所述结果存储空间可采用数组、动态数组、链表、区块链等数据存储方式。优选地,所述结果存储空间的空间大小与存储所有排序参数所需的空间大小相等,以此节省存储所述排序参数所需的空间,降低空间消耗。
60.优选地,当所述结果存储空间以结果数组的方式表示,所述方法还包括:将所述待排序的排序参数存储在待排序数组中;其中,所述建立与所述排序参数总数匹配的结果存储空间包括:建立数组长度与所述排序参数总数相等的结果数组。
61.在此,所述结果存储空间采用数组的存储方式,相应地,获取所述排序参数后将其汇总存储在待排序数组中,通过该方式统一排序前后的数据存储方式,便于数据排序中的数据转移等具体操作,简化排序过程。
62.继续在该方法中,s12按照预设的预测方法及切片数确定所有排序参数的索引值,其中所述索引值代表该排序参数在所述结果存储空间的预测位置。
63.在此,通过预设的预测方法及切片数计算各个排序参数的索引值,索引值表示该排序参数在顺序序列中的大致位置,例如,当通过预测方法计算出该排序参数的索引值为3时,代表该排序参数在全部排序参数的顺序(降序或升序)序列中大致位于第3位。通过这种方式对各个排序参数在顺序排序中的位置进行预测,以此大大减少排序过程中的比较次数,实现通过极少次数的比较即可确定该排序参数应处于的位置。
64.进一步地,所述按照预设的预测方法及切片数依次确定所有排序参数的索引值包括:获取所述排序参数中的最大值maxvalue、最小值minvalue、预设的切片数n及该排序参数值value,则该排序参数所处的片段的宽度step=(maxvalue-minvalue)/(n-1);则该排
序参数的索引值index=math.floor((value-minvalue)/step)。
65.继续在该方法中,s13将所述索引值相同的所述排序参数存放在一个片段中,以生成多个与所述索引值对应的片段。
66.在此,索引值相同的排序参数取值相似,在全部排序参数的顺序(降序或升序)序列中的大致位置相近,将这样的排序参数进行整合,作为一个片段。通过这种方式,对排序参数的整个取值空间进行了切片,分解为多个取值相似的片段。此方式采用了分治法,将对排序参数的整个取值空间的排序问题分解为对多个小区间的较少排序参数的排序子问题,大大降低了排序的复杂度。
67.同时,现有的排序方式所采用的分治法是将无序的原始数据序列进行直接分割,每个分割出的子序列中的数据在取值上无关联,而本技术采用的分治法通过对排序位置的预测,将排序参数的整个取值空间进行按顺序切片,每个片段中的排序参数取值相似,因此,通过此方式对各个片段进行排序,相较于普通的分治法而言复杂度更低,时间消耗也更少。
68.进一步地,当结果存储空间及所有排序参数都采用数组的存储方式时,相应地,设置数组长度等于预设切片数的切片数组,其中,所述切片数组为二维数组;将所述片段按照其对应的索引值顺序以数组的形式存放在所述切片数组中。
69.在此,所述片段以数组的形式存储相同索引值的排序参数,并将各个片段存放在切片数组中,因此,切片数组为一个二维数组,且长度等于预设切片数。通过这种方式,统一数据存储方式,便于数据排序中的数据转移等具体操作,简化排序过程。同时,切片数组的长度等于预设切片数,减少了对存储空间的浪费。
70.进一步地,所述将所述片段按照其对应的索引值顺序以数组的形式存放在所述切片数组中包括:将所述片段以数组的形式存放在数组下标等于该片段对应的索引值的切片数组元素中。
71.在此,由于切片数组的下标代表了片段在该切片数组中的位置,而片段的索引值同样代表了该片段在该切片数组中的位置,因此,直接将片段存放在数组下标等于该片段对应的索引值的切片数组元素中,即实现了片段在切片数组中的顺序存放。例如,当片段的索引值为0时,则将该片段存放在切片数组下标为0的数组元素(即首个元素)中,片段的索引值为1时,则将该片段存放在切片数组下标为1的数组元素(即第二个元素)中,以此类推。
72.进一步地,所述按照预设的预测方法及切片数依次确定所述待排序数组中各个排序参数对应的索引值包括:获取所述待排序数组中的最大值maxvalue、最小值minvalue、预设的切片数n及该排序参数值value,则该排序参数所处的片段的宽度step=(maxvalue-minvalue)/(n-1);则该排序参数的索引值index=math.floor((value-minvalue)/step)。
73.在此,按照该计算方法,排序参数最大值的索引值为n-1,排序参数最小值的索引值为0,即索引值的取值范围为0至n-1的闭区间,该取值范围与切片数组的数组长度相等,确保了片段与切片数组各个元素之间的一一对应关系。
74.继续在该方法中,s14按照根据所述索引值顺序依次将该索引值对应的片段中的所述排序参数写入与该索引值对应的所述结果存储空间的预测位置。
75.在此,按照索引值的顺序(升序或降序)依次将片段中的排序参数进行写入,写入位置由该排序参数的索引值决定。由于各个片段的索引值即代表了该片段在顺序排序中的
大致位置,因此,将片段按照索引值顺序进行写入,保证了片段是按照升序或者降序的顺序依次写入,对于结果存储空间而言,写入的操作是按照连续的地址依次进行的,这种连续地址的写入避免了结果存储空间中的两个排序参数之间存在未写入的空位置,确保了结果存储空间的大小等于存储所有排序参数所需的空间,避免了空间浪费,同时确保了写入顺序的准确性。
76.以升序排序为例,按照索引值的升序顺序依次获取索引值对应的片段,在最优的情况中,经过一次切片就使得各个片段中仅有1个排序参数,在此情况下直接将该片段中的排序参数写入其索引值所代表的结果存储空间预测位置中。
77.进一步地,结果存储空间为结果数组,当各个片段仅有1个排序参数时,按照片段索引值的顺序(升序或降序)依次将片段中的排序参数写入数组下标等该索引值的结果数组元素中。例如,片段的索引值为0,则将该片段中的排序参数写入数组下标为0的结果数组元素中;片段的索引值为1,则将该片段中的排序参数写入数组下标为1的结果数组元素中,以此类推。
78.具体地,当所有排序参数在整个取值区间中等距均匀分布时,可直接将分片数设置为取值区间长度与距离长度的商值,即可实现各个片段中仅有1个排序参数。以排序参数为50至100的取值空间,取值间距为0.5的全部数据为例,将切片数设置为100片,即可使每个片段中仅存在1个排序参数,在此情况下将各个片段按照其对应的索引值顺序直接写入该索引值所代表的预测位置,即通过一次计算就完成了数据排序的任务。
79.进一步地,当所述片段以数组的形式存放在数组下标等于该片段对应的索引值的切片数组元素中时,所述根据所述索引值顺序遍历各索引值对应的片段包括:按照所述切片数组的数组下标顺序遍历所述切片数组中的各个片段。
80.在此,由于片段的索引值即为其对应的数组下标,以此顺序存放在切片数组中,因此,对各个片段进行顺序遍历时,即可按照切片数组下标的顺序进行。
81.进一步地,所述符合预设的结果写入规则包括:所述片段中的排序参数总数不超过2个。
82.在此,仅对排序参数个数不超过2个的片段进行写入,当该片段中的排序参数个数为1个时,直接将该排序参数进行写入;当该片段中的排序参数个数为2个时,仅需通过一次比较即可将该片段中的排序参数按照比较结果写入结果存储空间中。当限定了写入的片段中排序参数个数不超过2个时,数据比较的操作复杂性得到了大幅度的削弱。
83.进一步地,所述将该索引值对应的片段中的所述排序参数写入与该索引值对应的所述结果存储空间的预测位置包括:设置初始值为所述结果存储空间首地址的结果存储标记;将该索引值对应的片段中的所有排序参数从所述结果存储标记开始顺序写入所述结果存储空间中;将所述结果存储标记后移至所述结果存储空间的首个未写入的地址。
84.在此,设置的结果存储标记用以标记在结果存储空间中的写入位置,将结果存储标记的初始值设置为结果存储空间首地址,保证了顺序写入的操作是从结果存储空间的首地址开始的,同时,在每次写入片段后,将结果存储标记后移至首个未写入的位置,确保了写入的操作是按照连续的地址依次进行的,即避免了结果存储空间中的两个排序参数之间存在未写入的空位置,确保了结果存储空间的大小等于存储所有排序参数所需的空间,避免了空间浪费,同时确保了写入顺序的准确性。
85.进一步地,当结果存储空间采用数组的形式时,所述结果存储标记的初始值为所述结果数组中下标为0的数组元素。通过此方式即可将首个写入位置确定为结果数组的首个元素,从而实现在结果数组中的顺序写入。
86.相应地,将所述结果存储标记后移至所述结果存储空间的首个未写入的地址包括:将所述结果存储标记对应的数组下标与写入的所述片段的排序参数个数进行累加,将其结果作为更新后的所述结果存储标记对应的数组下标。
87.在此,当一个片段从结果存储标记开始写入其包含的排序参数后,结果存储标记相应地进行后移,后移至该片段的写入位置末尾处。由于一个数组下标即可代表一个写入位置,因此,将结果存储标记对应的当前数组下标与该片段的排序参数总数进行加和,将结果存储标记对应的数组下标更新为该加和值,即实现了结果存储标记的后移。
88.在一个优选实施例中,参见图2所示,其中,图2中的步骤s21、s22及s23与图1实施例中的步骤s11、s12及s13相同或基本相同,故在此不再赘述,仅以引用的方式包含于此。其中,所述步骤s24为:
89.根据所述索引值顺序遍历各索引值对应的片段,当该索引值对应的片段符合预设的结果写入规则,将该索引值对应的片段中的所述排序参数写入与该索引值对应的所述结果存储空间的预测位置;当所述片段不符合预设的结果写入规则,将所述所有排序参数更新为该片段中的排序参数,并重复步骤s21、s22及s23。
90.在此,根据结果写入规则依次判断各个片段能否直接写入到结果存储空间中,当该片段可以直接写入结果存储空间中时,直接将该片段中的排序参数写入其索引值对应的结果存储空间中的预测位置。
91.当按照索引值顺序遍历到的片段不符合结果写入规则时,则对该片段进行递归切片,将该片段按照预测方法及切片数分割为多个子片段,再根据结果写入规则依次判断各个子片段是否能直接写入到结果存储空间中,重复递归到该片段中的所有排序参数都写入为止。通过递归切片的方式,将一个无法直接写入的片段拆分为多个可以直接写入子片段,避免了对该片段中全部排序参数的整体排序,大大降低了数据比较的次数及问题的复杂度,提高了排序的速度。
92.与现有技术相比,本技术通过获取待排序的排序参数,并建立与所述排序参数总数匹配的结果存储空间,其中,所述结果存储空间用以顺序存储所有排序参数;按照预设的预测方法及切片数确定所有排序参数的索引值,其中所述索引值代表该排序参数在所述结果存储空间的预测位置;将所述索引值相同的所述排序参数存放在一个片段中,以生成多个与所述索引值对应的片段;根据所述索引值顺序依次将该索引值对应的片段中的所述排序参数写入与该索引值对应的所述结果存储空间的预测位置。通过该方式预测各个排序参数的大致排序位置,从而减少了在确定排序位置过程中的冗余比较过程,因此,提高了排序速度,大大减少了排序过程中因冗余比较造成的时间消耗。
93.此外,本技术实施例还提供了一种计算机可读介质,其上存储有计算机可读指令,所述计算机可读指令可被处理器执行以实现前述方法。
94.本技术实施例还提供了一种用于排序参数的数据排序设备,其中,该设备包括:
95.一个或多个处理器;以及
96.存储有计算机可读指令的存储器,所述计算机可读指令在被执行时使所述处理器
执行前述方法的操作。
97.例如,计算机可读指令在被执行时使所述一个或多个处理器:
98.a获取待排序的排序参数,并建立与所述排序参数总数匹配的结果存储空间,其中,所述结果存储空间用以顺序存储所有排序参数;
99.b按照预设的预测方法及切片数确定所有排序参数的索引值,其中所述索引值代表该排序参数在所述结果存储空间的预测位置;
100.c将所述索引值相同的所述排序参数存放在一个片段中,以生成多个与所述索引值对应的片段;
101.d根据所述索引值顺序依次将该索引值对应的片段中的所述排序参数写入与该索引值对应的所述结果存储空间的预测位置。
102.对于本领域技术人员而言,显然本发明不限于上述示范性实施例的细节,而且在不背离本发明的精神或基本特征的情况下,能够以其他的具体形式实现本发明。因此,无论从哪一点来看,均应将实施例看作是示范性的,而且是非限制性的,本发明的范围由所附权利要求而不是上述说明限定,因此旨在将落在权利要求的等同要件的含义和范围内的所有变化涵括在本发明内。不应将权利要求中的任何附图标记视为限制所涉及的权利要求。此外,显然“包括”一词不排除其他单元或步骤,单数不排除复数。装置权利要求中陈述的多个单元或装置也可以由一个单元或装置通过软件或者硬件来实现。第一,第二等词语用来表示名称,而并不表示任何特定的顺序。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1