一种优先级队列设计方法及优先级队列设计装置制造方法及图纸

技术编号:12178943 阅读:104 留言:0更新日期:2015-10-08 17:06
本发明专利技术的实施例公开一种优先级队列设计方法及优先级队列设计装置。优先级队列设计方法包括:获取待置于优先级队列中的各元素的优先级级别序列;以得到的优先级级别序列构建优先级队列,优先级级别序列中的每一级优先级级别对应构建的所述优先级队列中的一列元素;为构建的所述优先级队列中的列元素设置相应的优先级级别索引,并使设置的所述优先级级别索引映射优先级级别链表;从所述待置于优先级队列中的各元素中,选取相同优先级级别的元素,按照先进先出的方式,置于该优先级别对应的优先级级别链表中,以使所述优先级级别链表存储具有该优先级级别的所有元素。应用本发明专利技术,可以降低基于生成的优先级队列进行更新的时间复杂度。

【技术实现步骤摘要】

本专利技术设及计算机应用技术,尤其设及一种优先级队列设计方法及优先级队列设 计装置。
技术介绍
在计算机应用领域中,队列是一种被经常应用的支持先进先出的数据结构,例如, 被广泛应用于数据存储,优先级队列是在支持优先级级别的情况下,保持先进先出操作模 式的队列,即对于需要处理的元素,按照优先级级别对各元素进行排序,对于优先级级别相 同的元素,按照先进先出的方式进行排序,从而得到优先级队列。优先级队列一般适用于要 求有序的应用场景中,实际应用中,在生成优先级队列后,由于元素的动态更新,因而,需要 在优先级队列中不断执行插入元素、删除元素等优先级队列更新处理,为了保证优先级队 列的有序,在优先级队列中插入新元素和删除队头元素时,需要结合待处理元素优先级级 别W及先进先出重新调整优先级队列中已有元素的位置。 在对优先级队列进行更新的过程中,由于优先级队列中一个元素的变动可能导致 需要对较多的元素进行优先级级别重排序处理,不仅需要消耗较多的计算资源,也使得基 于生成的优先级队列进行更新所耗费的时间较长,此外,在对优先级队列整的元素进行查 询时,其查询时间也与优先级队列的排序策略相关。因此,如何更有效地生成优先级队列, 减少查询W及更新优先级队列中元素所需的时间,花费较小的代价,使得生成的优先级队 列能快速高效地支持插入元素和删除元素等更新处理,提升用户的业务体验,是研究优先 级队列的一个热点问题。 目前,对于C++标准模板库(5化,StandardTemplateLibrary)和Java中的优先 级队列生成和更新,是基于堆来实现的。其中,堆是一种树形数据结构,是优先级队列中的 一种,每个结点都有一个值,堆的特点是根结点的值最小(或最大),且根结点的两个子树 也是一个堆。由于堆在添加元素与删除元素时都会破坏堆结构,并只允许在优先级队列的 前端(队头)进行删除操作,而在优先级队列的后端(队尾)进行插入操作。因而,添加元 素与删除元素都需要进行堆结构调整,在堆结构调整中,需要按照优先级级别算法W及先 进先出原则,将添加的元素插入优先级队列中该添加元素优先级对应的位置,在删除元素 时,从第一个(即最小元素,优先级最高)元素开始,即取队头元素执行删除操作。该样,通 过堆实现C++S化和化va中的优先级队列生成和更新,可W保证优先级队列中优先级高的 先服务,而非先入先服务。但该基于优先级级别算法W及先进先出原则生成的优先级队列 在进行更新时,插入元素和删除队头元素的时间复杂度都是O(logn),其中,n为优先级队 列中元素的个数。 为了有效降低生成的优先级队列在进行更新时所需的时间,现有技术中提出了基 于链表生成优先级队列,将各元素按照优先级级别递减顺序排列。该样,可W使得在生成的 优先级队列中插入元素的时间复杂度为o(lgn),而将删除元素的时间复杂度降低为0(1)。 但该方法,优先级队列整体更新所需的时间(时间复杂度)还是较长,降低了基于生成的优 先级队列进行更新时的效率,不能满足用户即时、快速的业务处理需求。
技术实现思路
有鉴于此,本专利技术实施例提供一种优先级队列设计方法及优先级队列设计装置, 降低基于生成的优先级队列进行更新的时间复杂度。 为达到上述目的,本专利技术的实施例采用如下技术方案:[000引一方面,本专利技术实施例提供一种优先级队列设计方法,包括: 获取待置于优先级队列中的各元素的优先级级别序列;W得到的优先级级别序列构建优先级队列,优先级级别序列中的每一级优先级级 别对应构建的所述优先级队列中的一列元素; 为构建的所述优先级队列中的列元素设置相应的优先级级别索引,并使设置的所 述优先级级别索引映射优先级级别链表; 从所述待置于优先级队列中的各元素中,选取相同优先级级别的元素,按照先进 先出的方式,置于该优先级别对应的优先级级别链表中,W使所述优先级级别链表存储具 有该优先级级别的所有元素。 本专利技术实施例提供的优先级队列设计方法,通过获取各元素对应的优先级级别, 为每一级优先级级别设置对应的优先级级别索引,每一优先级级别索引映射一优先级级别 链表,该优先级级别链表用于存储具有该优先级级别的所有元素。该样,在基于本专利技术实施 例的优先级队列进行元素插入时,插入元素的时间复杂度降低为0(1);而当执行删除队头 列元素的更新操作时,删除元素的时间复杂度为〇(m),其中,m为优先级级别索引数,大大 小于待置于优先级队列中的元素个数。从而在插入元素和获取队头列元素等更新操作时, 均能大大减少时间复杂度,降低基于生成的优先级队列进行更新的时间复杂度,提升操作 元素的效率。 另一方面,本专利技术实施例提供一种优先级队列设计装置,包括:优先级级别序列获 取模块、优先级队列构建模块、优先级级别索引设置模块W及优先级级别链表生成模块,其 中, 优先级级别序列获取模块,用于获取待置于优先级队列中的各元素的优先级级别 序列; 优先级队列构建模块,用于W优先级级别序列获取模块获取的优先级级别序列构 建优先级队列,优先级级别序列中的每一级优先级级别对应构建的所述优先级队列中的一 列元素; 优先级级别索引设置模块,用于为优先级队列构建模块构建的所述优先级队列中 的列元素对应的优先级级别设置相应的优先级级别索引,并使设置的所述优先级级别索引 映射优先级级别链表; 优先级级别链表生成模块,用于从所述待置于优先级队列中的各元素中,选取相 同优先级级别的元素,按照先进先出的方式,置于该优先级别对应的优先级级别链表中,W 使所述优先级级别链表存储具有该优先级级别的所有元素。 本专利技术实施例提供的优先级队列设计装置,优先级级别序列获取模块通过获取各 元素对应的优先级级别,优先级队列构建模块依据优先级级别序列构建优先级队列,优先 级级别索引设置模块为每一级优先级级别设置对应的优先级级别索引,每一优先级级别索 引映射一优先级级别链表,优先级级别链表生成模块为该优先级级别链表存储具有该优先 级级别的所有元素。该样,在基于本专利技术实施例的优先级队列进行元素插入时,插入元素的 时间复杂度降低为0(1);而当执行删除队头列元素的更新操作时,删除元素的时间复杂度 为0(m),其中,m为优先级级别索引数,大大小于待置于优先级队列中的元素个数。从而在 插入元素和获取队头列元素等更新操作时,均能大大减少时间复杂度,降低基于生成的优 先级队列进行更新的时间复杂度。【附图说明】 为了更清楚地说明本专利技术实施例或现有技术中的技术方案,下面将对实施例或现 有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本 专利技术的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可W 根据该些附图获得其它的附图。 图1为本专利技术实施例优先级队列设计方法流程示意图; 图2为本专利技术实施例构建的优先级队列结构示意图; 图3为本专利技术实施例构建的另一优先级队列结构示意图; 图4本专利技术实施例的优先级队列设计装置结构示意图。【具体实施方式】 下面结合附图对本专利技术实施例进行详细描述。 应当明确,所描述的实施例仅仅是本专利技术一部分实施例,而不是全部的实施例。基 于本专利技术中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其 它实施例,都属于本本文档来自技高网
...

【技术保护点】
一种优先级队列设计方法,其特征在于,该方法包括:获取待置于优先级队列中的各元素的优先级级别序列;以得到的优先级级别序列构建优先级队列,优先级级别序列中的每一级优先级级别对应构建的所述优先级队列中的一列元素;为构建的所述优先级队列中的列元素设置相应的优先级级别索引,并使设置的所述优先级级别索引映射优先级级别链表;从所述待置于优先级队列中的各元素中,选取相同优先级级别的元素,按照先进先出的方式,置于该优先级别对应的优先级级别链表中,以使所述优先级级别链表存储具有该优先级级别的所有元素。

【技术特征摘要】

【专利技术属性】
技术研发人员:潘洪安
申请(专利权)人:北京金山安全软件有限公司
类型:发明
国别省市:北京;11

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

1