CN107463353A - 一种基于指针地址偏移的排序方法和设备 - Google Patents

一种基于指针地址偏移的排序方法和设备 Download PDF

Info

Publication number
CN107463353A
CN107463353A CN201710624603.2A CN201710624603A CN107463353A CN 107463353 A CN107463353 A CN 107463353A CN 201710624603 A CN201710624603 A CN 201710624603A CN 107463353 A CN107463353 A CN 107463353A
Authority
CN
China
Prior art keywords
data
group
array
numerical value
pointers
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
CN201710624603.2A
Other languages
English (en)
Inventor
辛爱国
杨振江
同理
刘希童
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Beijing VRV Software Corp Ltd
Original Assignee
Beijing VRV Software Corp Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Beijing VRV Software Corp Ltd filed Critical Beijing VRV Software Corp Ltd
Priority to CN201710624603.2A priority Critical patent/CN107463353A/zh
Publication of CN107463353A publication Critical patent/CN107463353A/zh
Pending legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/22Arrangements for sorting or merging computer data on continuous record carriers, e.g. tape, drum, disc
    • G06F7/24Sorting, i.e. extracting data from one or more carriers, rearranging the data in numerical or other ordered sequence, and rerecording the sorted data on the original carrier or on a different carrier or set of carriers sorting methods in general

Landscapes

  • Engineering & Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Hardware Design (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Management, Administration, Business Operations System, And Electronic Commerce (AREA)

Abstract

本发明提供一种基于指针地址偏移的排序方法和设备用于解决现有技术中排序算法效率低的问题。其中方法包括:接收一组不具有重复值的数据;根据该组数据新建指针数组;其中指针数组的大小等于该组数据的最大值和最小值之间的距离;遍历该组数据,根据该组数据中每一数值与最大值之间的距离对应的将指针数组中对应的单元赋值为指向该数值的指针;遍历该指针数组,从而获得按序排列的数据。本发明提高了特定场合下的排序速度。

Description

一种基于指针地址偏移的排序方法和设备
技术领域
本发明涉及通信技术/计算机技术,具体涉及一种基于指针地址偏移的排序方法和设备。
背景技术
现有技术下的排序方法众多,最常用的有(快速排序、希尔排序、堆排序、归并排序等),通常他们的时间效率介于O(log2n)-O(n2)之间,效率比较低。
本发明要解决的技术问题是现有技术中排序算法效率低的问题。
发明内容
鉴于上述问题,本发明提出了克服上述问题或者至少部分地解决上述问题的一种基于指针地址偏移的排序方法和设备。
为此目的,第一方面,本发明提出一种基于指针地址偏移的排序方法,包括:
接收一组不具有重复值的数据;
根据该组数据新建指针数组;其中指针数组的大小等于该组数据的最大值和最小值之间的距离;
遍历该组数据,根据该组数据中每一数值与最大值之间的距离对应的将指针数组中对应的单元赋值为指向该数值的指针;
遍历该指针数组,从而获得按序排列的数据。
可选的,所述根据该组数据中每一数值与最大值之间的距离对应的将指针数组中对应的单元赋值为指向该数值的指针,包括:
对于该组数据中的每一数值a,将与指针数组中与首地址距离等于数值a与最大值之间距离的单元赋值为指向数组a的指针。
可选的,所述根据该组数据中每一数值与最大值之间的距离对应的将指针数组中对应的单元赋值为指向该数值的指针,包括:
对于该组数据中的每一数值a,将与指针数组中与尾地址距离等于数值a与最大值之间距离的单元赋值为指向数组a的指针。
可选的,在接收一组不具有重复值的数据之后,在遍历该组数据之前,包括:
将接收到的每一个数x的小数点右移相同的位数,使所有的数据均可用整数表示未x’,获得一组数据X’,将一组数据X’中的每一个数减去该组数中的最小值,获得一组数据Y,将数据Y所述遍历该组数据中的该组数据。
第二方面,本发明提供一种基于指针地址偏移的排序方法,包括:
接收一组不具有重复值的数据;
根据该组数据新建指针数组;其中指针数组的大小等于该组数据的最大值和最小值之间的距离;
遍历该组数据,根据该组数据中每一数值与最小值之间的距离对应的将指针数组中对应的单元赋值为指向该数值的指针;
遍历该指针数组,从而获得按序排列的数据。
可选的,所述根据该组数据中每一数值与最小值之间的距离对应的将指针数组中对应的单元赋值为指向该数值的指针,包括:
对于该组数据中的每一数值a,将与指针数组中与首地址距离等于数值a与最小值之间距离的单元赋值为指向数组a的指针。
可选的,所述根据该组数据中每一数值与最小值之间的距离对应的将指针数组中对应的单元赋值为指向该数值的指针,包括:
对于该组数据中的每一数值a,将与指针数组中与尾地址距离等于数值a与最小值之间距离的单元赋值为指向数组a的指针。
第三方面,本发明提供一种计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时实现如上所述方法的步骤。
第四方面,本发明提供一种计算机设备,包括存储器、处理器以及存储在所述存储器上并可在所述处理器上执行的计算机程序,所述处理器执行所述程序时实现如上所述方法的步骤。
由上述技术方案可知,现有技术下的排序方法众多,最常用的有(快速排序、希尔排序、堆排序、归并排序等),通常他们的时间效率介于O(log2n)-O(n2)之间,而本发明可以将效率提高到O(1)。即本发明的只需遍历一遍计算最大最小值,再遍历一遍根据数值对指针数据赋值,即可得到升序或降序的排列。
与传统常用排序算法比较虽然在空间上有额外开销,但是大大提高了在特定场合下的排序速度,现在的计算机内存空间已经越来越大,这些内存开销是微不足道的,但是时间上却是得到了极大的提升。
前面是提供对本发明一些方面的理解的简要发明内容。这个部分既不是本发明及其各种实施例的详尽表述也不是穷举的表述。它既不用于识别本发明的重要或关键特征也不限定本发明的范围,而是以一种简化形式给出本发明的所选原理,作为对下面给出的更具体的描述的简介。应当理解,单独地或者组合地利用上面阐述或下面具体描述的一个或多个特征,本发明的其它实施例也是可能的。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本发明的一个实施例中执行方法流程示意图。
具体实施方式
下面将结合示例性的通信系统描述本发明。
为此目的,第一方面,本发明提出一种基于指针地址偏移的排序方法,包括:
S101、接收一组不具有重复值的数据;
S102、根据该组数据新建指针数组;其中指针数组的大小等于该组数据的最大值和最小值之间的距离;
S103、遍历该组数据,根据该组数据中每一数值与最大值之间的距离对应的将指针数组中对应的单元赋值为指向该数值的指针;
S104、遍历该指针数组,从而获得按序排列的数据。
不具有重复值的数据例如电话号,手机号,索引号,门牌号,等等。
在本发明的一个实施例中,一种基于指针地址偏移的排序方法,包括:
接收一组不具有重复值的数据;
根据该组数据新建指针数组;其中指针数组的大小等于该组数据的最大值和最小值之间的距离;
遍历该组数据,根据该组数据中每一数值与最小值之间的距离对应的将指针数组中对应的单元赋值为指向该数值的指针;
遍历该指针数组,从而获得按序排列的数据。
例如在发明的一个实施例中,为了将一组8位整数型数据进行排序,实施上述方法时包括步骤:
第一步、首先得到一组待排序非重复的数组。
第二步、如若能明显的知道到该数组中的最大值和最小值:{如8位电话号最小值(10000000),最大值(99999999)},则转到第四步。
第三步、遍历一遍待排序数组获取到最大、最小值。
第四步、开辟出最大值减去最小值所得到的值大小(即所述最大值域最小值之间的距离)的指针数组。
第五步、遍历待排序的数组将其每一个数的值所在的指针值赋给开辟出的指针数组首地址加上该数的值减去数组中最大值的偏移量上,换一种说法就是指针数组首地址加上该数值减去数组中最大值的偏移量的指针所指向的值等于该数的地址。
第六步、顺序遍历该指针数组,遇到指针指向为空则跳过,便可获取到升序排序出的结果,同理,倒序遍历该指针数组便可获取到降序排列的结果。
现有技术下的排序方法众多,最常用的有(快速排序、希尔排序、堆排序、归并排序等),通常他们的时间效率介于O(log2n)-O(n2)之间,而本发明可以将效率提高到O(1)。即本发明的只需遍历一遍计算最大最小值,再遍历一遍根据数值对指针数据赋值,即可得到升序或降序的排列。
与传统常用排序算法比较虽然在空间上有额外开销,但是大大提高了在特定场合下的排序速度,现在的计算机内存空间已经越来越大,这些内存开销是微不足道的,但是时间上却是得到了极大的提升。
本领域技术人员在理解本发明的相关概念后可知,可选的,所述根据该组数据中每一数值与最大值之间的距离对应的将指针数组中对应的单元赋值为指向该数值的指针,包括:
对于该组数据中的每一数值a,将与指针数组中与首地址距离等于数值a与最大值之间距离的单元赋值为指向数组a的指针。
可选的,所述根据该组数据中每一数值与最大值之间的距离对应的将指针数组中对应的单元赋值为指向该数值的指针,包括:
对于该组数据中的每一数值a,将与指针数组中与尾地址距离等于数值a与最大值之间距离的单元赋值为指向数组a的指针。
在本发明的一个实施例中,在接收一组不具有重复值的数据之后,在遍历该组数据之前,包括:
将接收到的每一个数x的小数点右移相同的位数,使所有的数据均可用整数表示未x’,获得一组数据X’,将一组数据X’中的每一个数减去该组数中的最小值,获得一组数据Y,将数据Y所述遍历该组数据中的该组数据。
可以理解的是,在S104步骤中获得按序排列的数据时,对应的还原上述数据至原始的数据。
在本发明的一个实施例中,所述根据该组数据中每一数值与最小值之间的距离对应的将指针数组中对应的单元赋值为指向该数值的指针,包括:
对于该组数据中的每一数值a,将与指针数组中与首地址距离等于数值a与最小值之间距离的单元赋值为指向数组a的指针。
本领域技术人员同理可知,所述根据该组数据中每一数值与最小值之间的距离对应的将指针数组中对应的单元赋值为指向该数值的指针,包括:
对于该组数据中的每一数值a,将与指针数组中与尾地址距离等于数值a与最小值之间距离的单元赋值为指向数组a的指针。
本发明提供一种计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时实现如上所述方法的步骤。
本发明提供一种计算机设备,包括存储器、处理器以及存储在所述存储器上并可在所述处理器上执行的计算机程序,所述处理器执行所述程序时实现如上所述方法的步骤。本文中使用的“监视”包括与用仪器来观察、记录或检测有关的任何类型的功能,这些仪器对被监视的元件或元件组的操作或状态没有任何影响。
本文中使用的“至少一个”、“一个或多个”以及“和/或”是开放式的表述,在使用时可以是联合的和分离的。例如,“A、B和C中的至少一个”,“A、B或C中的至少一个”,“A、B和C中的一个或多个”以及“A、B或C中的一个或多个”指仅有A、仅有B、仅有C、A和B一起、A和C一起、B和C一起或A、B和C一起。
术语“一个”实体是指一个或多个所述实体。由此术语“一个”、“一个或多个”和“至少一个”在本文中是可以互换使用的。还应注意到术语“包括”、“包含”和“具有”也是可以互换使用的。
本文中使用的术语“自动的”及其变型是指在执行处理或操作时没有实质的人为输入的情况下完成的任何处理或操作。然而,即使在执行处理或操作时使用了执行所述处理或操作前接收到的实质的或非实质的人为输入,所述处理或操作也可以是自动的。如果输入影响所述处理或操作将怎样进行,则视该人为输入是实质的。不影响所述处理或操作进行的人为输入不视为是实质的。
本文中使用的术语“计算机可读介质”是指参与将指令提供给处理器执行的任何有形存储设备和/或传输介质。计算机可读介质可以是在IP网络上的网络传输(如SOAP)中编码的串行指令集。这样的介质可以采取很多形式,包括但不限于非易失性介质、易失性介质和传输介质。非易失性介质包括例如NVRAM或者磁或光盘。易失性介质包括诸如主存储器的动态存储器(如RAM)。计算机可读介质的常见形式包括例如软盘、柔性盘、硬盘、磁带或任何其它磁介质、磁光介质、CD-ROM、任何其它光介质、穿孔卡、纸带、任何其它具有孔形图案的物理介质、RAM、PROM、EPROM、FLASH-EPROM、诸如存储卡的固态介质、任何其它存储芯片或磁带盒、后面描述的载波、或计算机可以读取的任何其它介质。电子邮件的数字文件附件或其它自含信息档案或档案集被认为是相当于有形存储介质的分发介质。当计算机可读介质被配置为数据库时,应该理解该数据库可以是任何类型的数据库,例如关系数据库、层级数据库、面向对象的数据库等等。相应地,认为本发明包括有形存储介质或分发介质和现有技术公知的等同物以及未来开发的介质,在这些介质中存储本发明的软件实施。
本文中使用的术语“确定”、“运算”和“计算”及其变型可以互换使用,并且包括任何类型的方法、处理、数学运算或技术。更具体地,这样的术语可以包括诸如BPEL的解释规则或规则语言,其中逻辑不是硬编码的而是在可以被读、解释、编译和执行的规则文件中表示。
本文中使用的术语“模块”或“工具”是指任何已知的或以后发展的硬件、软件、固件、人工智能、模糊逻辑或能够执行与该元件相关的功能的硬件和软件的组合。另外,虽然用示例性实施方式来描述本发明,但应当理解本发明的各方面可以单独要求保护。
需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者终端设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者终端设备所固有的要素。在没有更多限制的情况下,由语句“包括……”或“包含……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者终端设备中还存在另外的要素。此外,在本文中,“大于”、“小于”、“超过”等理解为不包括本数;“以上”、“以下”、“以内”等理解为包括本数。
尽管已经对上述各实施例进行了描述,但本领域内的技术人员一旦得知了基本创造性概念,则可对这些实施例做出另外的变更和修改,所以以上所述仅为本发明的实施例,并非因此限制本发明的专利保护范围,凡是利用本发明说明书及附图内容所作的等效结构或等效流程变换,或直接或间接运用在其他相关的技术领域,均同理包括在本发明的专利保护范围之内。

Claims (9)

1.一种基于指针地址偏移的排序方法,其特征在于,包括:
接收一组不具有重复值的数据;
根据该组数据新建指针数组;其中指针数组的大小等于该组数据的最大值和最小值之间的距离;
遍历该组数据,根据该组数据中每一数值与最大值之间的距离对应的将指针数组中对应的单元赋值为指向该数值的指针;
遍历该指针数组,从而获得按序排列的数据。
2.根据权利要求1的方法,其特征在于,所述根据该组数据中每一数值与最大值之间的距离对应的将指针数组中对应的单元赋值为指向该数值的指针,包括:
对于该组数据中的每一数值a,将与指针数组中与首地址距离等于数值a与最大值之间距离的单元赋值为指向数组a的指针。
3.根据权利要求1的方法,其特征在于,所述根据该组数据中每一数值与最大值之间的距离对应的将指针数组中对应的单元赋值为指向该数值的指针,包括:
对于该组数据中的每一数值a,将与指针数组中与尾地址距离等于数值a与最大值之间距离的单元赋值为指向数组a的指针。
4.根据权利要求1的方法,其特征在于,在接收一组不具有重复值的数据之后,在遍历该组数据之前,包括:
将接收到的每一个数x的小数点右移相同的位数,使所有的数据均可用整数表示未x’,获得一组数据X’,将一组数据X’中的每一个数减去该组数中的最小值,获得一组数据Y,将数据Y所述遍历该组数据中的该组数据。
5.一种基于指针地址偏移的排序方法,其特征在于,包括:
接收一组不具有重复值的数据;
根据该组数据新建指针数组;其中指针数组的大小等于该组数据的最大值和最小值之间的距离;
遍历该组数据,根据该组数据中每一数值与最小值之间的距离对应的将指针数组中对应的单元赋值为指向该数值的指针;
遍历该指针数组,从而获得按序排列的数据。
6.根据权利要求1的方法,其特征在于,所述根据该组数据中每一数值与最小值之间的距离对应的将指针数组中对应的单元赋值为指向该数值的指针,包括:
对于该组数据中的每一数值a,将与指针数组中与首地址距离等于数值a与最小值之间距离的单元赋值为指向数组a的指针。
7.根据权利要求1的方法,其特征在于,所述根据该组数据中每一数值与最小值之间的距离对应的将指针数组中对应的单元赋值为指向该数值的指针,包括:
对于该组数据中的每一数值a,将与指针数组中与尾地址距离等于数值a与最小值之间距离的单元赋值为指向数组a的指针。
8.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,该程序被处理器执行时实现如权利要求1至7任一所述方法的步骤。
9.一种计算机设备,包括存储器、处理器以及存储在所述存储器上并可在所述处理器上执行的计算机程序,其特征在于,所述处理器执行所述程序时实现如权利要求1至7任一所述方法的步骤。
CN201710624603.2A 2017-07-27 2017-07-27 一种基于指针地址偏移的排序方法和设备 Pending CN107463353A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201710624603.2A CN107463353A (zh) 2017-07-27 2017-07-27 一种基于指针地址偏移的排序方法和设备

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201710624603.2A CN107463353A (zh) 2017-07-27 2017-07-27 一种基于指针地址偏移的排序方法和设备

Publications (1)

Publication Number Publication Date
CN107463353A true CN107463353A (zh) 2017-12-12

Family

ID=60547662

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201710624603.2A Pending CN107463353A (zh) 2017-07-27 2017-07-27 一种基于指针地址偏移的排序方法和设备

Country Status (1)

Country Link
CN (1) CN107463353A (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN109358902A (zh) * 2018-10-18 2019-02-19 南京海桐环境科技有限公司 一种在simatic s7-200 smart中能够快速便捷创建数组的程序

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN109358902A (zh) * 2018-10-18 2019-02-19 南京海桐环境科技有限公司 一种在simatic s7-200 smart中能够快速便捷创建数组的程序

Similar Documents

Publication Publication Date Title
CN110472068B (zh) 基于异构分布式知识图谱的大数据处理方法、设备及介质
CN109376142A (zh) 数据迁移方法及终端设备
CN110222074A (zh) 索引查找方法、查找装置、电子设备及存储介质
CN102915344B (zh) 一种sql语句处理方法及装置
CN115563477B (zh) 谐波数据识别方法、装置、计算机设备和存储介质
CN102819589A (zh) 一种基于etl的数据优化方法及设备
CN116521956A (zh) 一种图数据库查询方法、装置、电子设备及存储介质
CN109388636A (zh) 业务数据插入数据库方法、装置、计算机设备及存储介质
CN110019341B (zh) 一种数据查询方法及装置
CN103714121A (zh) 一种索引记录的管理方法及装置
CN106407233A (zh) 一种数据处理方法和设备
CN103064991A (zh) 一种海量数据聚类方法
CN107463353A (zh) 一种基于指针地址偏移的排序方法和设备
CN107463578B (zh) 应用下载量统计数据去重方法、装置和终端设备
CN107800816A (zh) 一种ip地址数据库建立方法及终端设备
CN107315806B (zh) 一种基于文件系统的嵌入式存储方法和装置
Nekrich Space-efficient range reporting for categorical data
CN115374121A (zh) 数据库索引的生成方法、机器可读存储介质与计算机设备
CN109324963A (zh) 自动测试收益结果的方法及终端设备
CN114595215A (zh) 数据处理方法、装置、电子设备及存储介质
CN101799803B (zh) 信息处理方法、模块及系统
JP2017041017A (ja) テーブル設計支援装置、テーブル設計支援方法及び制御プログラム
CN111143296A (zh) 变电站scd文件分类方法、装置、终端及存储介质
CN113792048B (zh) 非关系型数据库的表单校验规则生成方法和系统
CN116881283A (zh) 基于HBase的数据分页查询方法和装置、电子设备

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
RJ01 Rejection of invention patent application after publication
RJ01 Rejection of invention patent application after publication

Application publication date: 20171212