`
tw5566
  • 浏览: 455361 次
  • 性别: Icon_minigender_1
  • 来自: 长沙
社区版块
存档分类
最新评论

算法学习(六)--优先队列

阅读更多
package com.tw.dst.sq;


/**
 * <p>优先队列
 *  优先队列允许访问最小(或者有时是最大)的数据项
    优先队列的重要操作是有序地插入新数据项和移除关键字最小的数据项
 * </p>
 * @author tangw 2010-11-26
 *
 */
public class PriorityQueue {
    private int nItems; //队列中元素的个数
    private long pqArr[];//队列数组   
    private int maxSize;//队列中最大元素个数   
    
    //构造函数
    public PriorityQueue(int size){   
        maxSize = size;   
        pqArr = new long[size];   
        nItems = 0;   
    }   
    //插入排序   
    public void insert(long value){   
        int i;   
        if(nItems == 0)   
            pqArr[nItems++] = value;   
        else{   
            for(i = nItems-1;i >= 0;i--){   
                if(value < pqArr[i]){   
                    pqArr[i+1] = pqArr[i];   
                }   
                else  
                    break;   
            }   
            pqArr[i+1] = value;   
            nItems++;   
        }   
    }   
    //移除   
    public long remove(){   
        return pqArr[--nItems];   
    }   
    //是否为空   
    public boolean isEmpty(){   
        return nItems == 0;   
    }   
    //是否已满   
    public boolean isFull(){   
        return nItems == maxSize;   
    }   
       
    public void print(){   
        for(int i = 0;i < nItems;i++)   
            System.out.print(pqArr[i]+" ");   
        System.out.println();   
    }   
       
    public static void main(String[] args) {   
        PriorityQueue pq = new PriorityQueue(10);   
        while(!pq.isFull()){   
            long value = (long)(Math.random()*100);   
            pq.insert(value);   
        }   
        pq.print();   
    } 

}

 

分享到:
评论

相关推荐

    算法-数据结构和算法-5-队列和双端队列.rar

    在计算机科学领域,数据结构和算法是至关重要的...通过阅读“数据结构和算法-5-队列和双端队列.pdf”这份文档,你可以深入学习它们的实现细节、操作方法以及在实际问题中的应用,从而在编程实践中更好地运用这些工具。

    c++算法集-排序-链表-图-队列-二叉树实现

    "c++算法集-排序-链表-图-队列-二叉树实现"这个压缩包包含了C++语言实现的一些核心数据结构和算法,这些都是计算机科学的基础。 首先,我们来详细探讨排序算法。排序是计算机科学中最基本的操作之一,它涉及将一组...

    算法-树形结构- 优先队列.rar

    优先队列是一种特殊的数据结构,它在处理问题时具有较高的效率,特别是在需要频繁进行查找最大或最小元素并删除这些...通过学习这部分内容,你可以深入理解优先队列的工作原理,提高在算法设计和数据结构使用上的能力。

    Acm常用算法学习模板-1

    文件包括以下子文件,每个文件里面包括了一定数量的...5-优先队列 6-拓扑排序 7-博弈论 8-线段树 9-树状数组 10-字典树 11-二分图 12-网络流 13-高精度 14-几何 15-自动机 16-DP_01背包 16-DP_树状dp 16-贪心 17-数论

    算法-数据结构和算法-4-栈和队列.rar

    在计算机科学中,数据结构和算法是至关重要的组成部分,它们是构建高效软件和解决复杂问题的基础。...因此,深入学习“算法-数据结构和算法-4-栈和队列.rar”中的内容,将对提升编程技能大有裨益。

    优先队列算法实现(Java)

    在计算机科学中,尤其是在算法设计中,优先队列常被用于解决各种问题,如任务调度、事件驱动模拟和图形学等。本实现是用Java编程语言完成的,Java提供了一个内置的PriorityQueue类,但这里可能是自定义实现,以便更...

    用数组实现的优先队列(JAVA)

    总之,`PriorityQ.java`文件可能是一个简单的数组实现优先队列的示例,通过分析这个文件,我们可以学习到如何利用数组数据结构实现优先队列,以及理解其核心的插入、删除和查找操作。同时,这也能帮助我们更好地掌握...

    广东工业大学-优先队列和二叉堆.pdf

    在广东工业大学的教程中,优先队列和二叉堆是数据结构的重要组成部分。优先队列是一种特殊的队列,其元素具有优先级属性...通过优先队列的学习,学生可以更好地掌握数据组织和算法设计的方法,提高解决复杂问题的能力。

    算法-搜索- 广度优先搜索(BFS).rar

    - **优先队列**:在某些特定问题中,可以使用优先队列(如最小堆)来优化BFS,例如在网络路由问题中,可以优先处理代价较小的边。 - **剪枝策略**:在解决特定问题时,可以通过剪枝策略提前终止搜索,减少不必要的...

    数据结构,算法与应用 ---C++语言描述(代码与习题答案)

    常见的算法有排序(如冒泡排序、选择排序、插入排序、快速排序、归并排序)、搜索(如线性搜索、二分搜索)、图算法(如深度优先搜索DFS、广度优先搜索BFS、最短路径算法Dijkstra、Floyd-Warshall)等。理解和掌握...

    基础算法----线性表和栈,队列

    队列在任务调度、打印机管理、广度优先搜索等领域有着广泛的应用。 **栈与队列的区别** 栈的特点在于其操作集中在一端(栈顶),而队列的操作分别在两端(队头和队尾)。栈强调的是“后进先出”,而队列强调的是...

    基于C++实现SJF短优先算法+HRRN高响应比优先调度算法+多级反馈队列调度算法源码.zip

    【资源说明】 1、该资源内项目代码都是经过测试运行成功,功能ok的情况下才上传的,请放心下载使用! 2、本项目适合计算机相关专业...基于C++实现SJF短优先算法+HRRN高响应比优先调度算法+多级反馈队列调度算法源码.zip

    数据结构算法与应用-C__语言描述.rar

    堆是优先队列的一种实现,常用在堆排序和堆优化的优先级队列中。 3. 图形数据结构:图由顶点和边组成,有邻接矩阵和邻接表两种表示方式。图遍历包括深度优先搜索和广度优先搜索,广泛应用在网络路由、社交网络分析等...

    数据结构与算法 学习代码-PDF版

    搜索算法包括线性搜索、二分搜索以及图或树的深度优先搜索(DFS)和广度优先搜索(BFS)。 递归是一种强大的编程技术,通过函数自我调用来解决问题,例如在斐波那契数列、汉诺塔等经典问题中的应用。动态规划则用于...

    用堆实现优先队列

    优先队列是一种特殊的数据结构,它允许我们按照...总的来说,这个压缩包提供了一个用C语言实现的基于堆的优先队列,包含了实现和测试的源码,以及使用说明,是学习和理解优先队列及其底层数据结构堆的一个实用资源。

    数据结构-c语言-带main函数-图7.3-图的遍历-广度优先搜索-队列-邻接表-无向图。

    总结来说,这个项目涉及了数据结构的基础知识,包括邻接表的使用来表示无向图,以及通过队列实现广度优先搜索的算法。CFree软件提供了一个友好的开发环境,使得代码编写和调试更加便捷。通过这段代码,读者可以学习...

    数据结构与算法-----PPT版本

    它们是计算机科学的灵魂,包括排序算法(如冒泡排序、选择排序、插入排序、快速排序、归并排序)、搜索算法(如二分查找、深度优先搜索、广度优先搜索)、图算法(如最短路径问题的Dijkstra算法和Floyd算法)等。...

    c语言常用算法-----列举C语言各种常用算法

    - 堆:如最大堆、最小堆,常用于优先队列。 以上是C语言中常见的算法类型,每种算法都有其特定的应用场景和优缺点。学习和掌握这些算法,对于编写高效、可靠的代码至关重要。在实际编程过程中,根据问题的特性选择...

    20151910042-刘鹏-DSA实验09-优先队列结构实验1

    【优先队列】是计算机科学中一种特殊类型的队列,其主要特征...总之,这个实验是学习和理解优先队列的重要实践,通过动手操作,学生能更好地掌握优先队列的内在逻辑和应用,提升在实际问题中解决复杂数据处理的能力。

Global site tag (gtag.js) - Google Analytics