【技术实现步骤摘要】
数据排序方法、装置、设备、存储介质及程序产品
本专利技术涉及数据排序
,尤其涉及一种数据排序方法、装置、设备、存储介质及程序产品。
技术介绍
二叉堆(BinaryHeap)是一种基于二叉树的数据结构,广泛应用于实现从大量数据中选取最大或最小的N个数据以及优先级队列,即实现数据排序。现有技术中基于指针链的二叉堆的数据排序方法应用于实现优先级队列如定时器队列时,在原数据中进行待更新数据的增加或删除操作时要定位尾节点,定位尾节点的过程需要根据二叉堆中各节点的子节点指针从根节点一步步定位到尾节点。然而,上述现有方法中定位尾节点的时间复杂度高,导致进行待更新数据的增加或删除操作的时间复杂度高,即对原数据进行更新及排序操作的时间复杂度高。
技术实现思路
本专利技术实施例提供一种数据排序方法、装置、设备、存储介质及程序产品,以解决现有的基于指针链的二叉堆的数据排序方法中,定位尾节点的时间复杂度高,导致进行待更新数据的增加或删除操作的时间复杂度高的技术问题。第一方面,本专利技术实施例提供一种 ...
【技术保护点】
1.一种数据排序方法,其特征在于,包括:/n获取数据排序更新请求,所述数据排序更新请求中包括:待更新数据和更新类型;/n根据数据排序更新请求,从存储有原数据的二叉堆对应的循环双向链表中根据当前游标节点指针的指向确定当前游标节点,当前游标节点为所述二叉堆中第一个叶子节点或半节点,所述二叉堆为根节点在最上层,叶子节点在下层的二叉堆,所述第一个叶子节点为最上层最左侧的叶子节点,所述半节点为只有左子节点的节点;/n根据所述更新类型及所述当前游标节点确定所述待更新数据在所述二叉堆中对应的待更新节点;/n根据所述待更新节点和所述待更新数据对所述原数据进行更新及排序操作。/n
【技术特征摘要】
1.一种数据排序方法,其特征在于,包括:
获取数据排序更新请求,所述数据排序更新请求中包括:待更新数据和更新类型;
根据数据排序更新请求,从存储有原数据的二叉堆对应的循环双向链表中根据当前游标节点指针的指向确定当前游标节点,当前游标节点为所述二叉堆中第一个叶子节点或半节点,所述二叉堆为根节点在最上层,叶子节点在下层的二叉堆,所述第一个叶子节点为最上层最左侧的叶子节点,所述半节点为只有左子节点的节点;
根据所述更新类型及所述当前游标节点确定所述待更新数据在所述二叉堆中对应的待更新节点;
根据所述待更新节点和所述待更新数据对所述原数据进行更新及排序操作。
2.根据权利要求1所述的方法,其特征在于,所述根据所述更新类型及所述当前游标节点确定所述待更新数据在所述二叉堆中对应的待更新节点,包括:
若确定所述更新类型为增加数据类型,则确定待更新数据对应的待更新节点为当前游标节点的待增加的子节点;
若确定所述更新类型为删除数据类型,则确定待更新数据对应的待更新节点为尾节点,并确定待更新数据对应的待删除节点。
3.根据权利要求2所述的方法,其特征在于,若确定待更新节点为游标节点待增加的子节点,则所述根据所述待更新节点和所述待更新数据对所述原数据进行更新及排序操作,包括:
在游标节点增加子节点作为待更新节点,将所述待更新数据添加到待更新节点中,以完成对原数据的更新操作;
根据所述待更新节点中的待更新数据与所述待更新节点对应的父节点中的数据,确定所述待更新节点与所述待更新节点对应的父节点是否需要进行交换操作,若是,则对所述待更新节点对应的父节点及所述待更新节点进行交换操作,以完成对原数据的排序操作。
4.根据权利要求2所述的方法,其特征在于,若确定待更新节点为尾节点,则所述根据所述待更新节点和所述待更新数据对所述原数据进行更新及排序操作,包括:
删除尾节点,以完成对原数据的更新操作;
采用所述尾节点替换掉待删除节点,作为新节点;
根据所述新节点中的数据与所述待删除节点对应的子节点中的数据,确定所述新节点与所述待删除节点对应的子节点是否需要进行交换操作,若是,则对所述新节点与所述待删除节点对应的子节点进行交换操作,以完成对原数据的排序操作。
5.根据权利要求1-4任一项所述的方法,其特征在于,所述循环双向链表中包括所述二叉堆中非游标节点的叶子节点及游标节点,以及所述二叉堆中非游标节点的叶子节点及游标节点对应的当前指向关系;
所述根据所述待更新节点和所述待更新数据对所述原数据进行更新操作之后,还包括:
根据更新类型及所述当前游标节点的类型对所述当前游标节点及所述当前指向关系进行更新。
6.根据权利要求5所述的方法,其特征在于,所述二叉堆的节点从左至右,从上至下顺序排列形成节点顺序;
所述二叉堆中非游标节点的叶子节点及游标节点对应的当前指向关系具体包括:
非游标节点及尾节点的叶子节点的左节点指针指向所述叶子节点的上一节点,所述叶子节点的右节点指针指向所述叶子节点的下一节点,所述游标节点的左节点指针指向尾节点,所述游标节点的右节点指针指向所述游标节点的下一节点,所述尾节点的左节点指针指向所述尾节点的上一节点,所述尾节点的右节点指针指向所述游标节点。
7.根据权利要求6所述的方法,其特征在于,若所述更新类型为增加数据类型,所述当前游标节点的类型为第一个叶子...
【专利技术属性】
技术研发人员:高翅,齐伟,
申请(专利权)人:北京柠檬微趣科技股份有限公司,
类型:发明
国别省市:北京;11
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。