zoukankan      html  css  js  c++  java
  • 优先队列

      优先队列是一种强调顺序的队列,和普通队列一样,遵循先入先出的规则,不同是在放入元素时,就已经按照某种方案进行了优先级的排序,通常是在添加的数据项中给定一套关键字,依照重要程度将关键字小的放在队尾或者队头。剩下的查看,移除操作都和普通队列一样。

      

      这次的java代码实现,规定升序排列元素,并且取队尾的形式展示。

    package com.test;
    
    public class Test {
    
        public static void main(String[] args) {
            priorityQ q = new priorityQ(10);
            q.insert(1);
            q.insert(2);
            q.insert(3);
            q.insert(4);
            
            q.remove();
            
            long m = q.peekMin();
            System.out.println("min:"+m);
            
        }
        
        
    }
    
    /**
     * 优先队列
     * @author jingxin
     *
     */
    class priorityQ{
        private int maxSize;  // 队列大小
        private long[] queArray;  // 基于数组
        private int nElems;  // 元素下标
        
        public priorityQ(int s){
            maxSize = s;
            queArray = new long[maxSize];
            nElems = 0;
        }
        
        // 添加元素(元素值小的在上)
        public void insert(long item){
            int j;
            if(nElems == 0){
                queArray[nElems++] = item;
            }else{
                // 添加的元素与之前加的元素比较,升序排
                for (j = nElems-1; j >=0; j--) {
                    if(item>queArray[j]){
                        queArray[j+1] = queArray[j];
                    }else{
                        break;
                    }
                }
                // 此时的j是上面最后一次交换的位置
                queArray[j+1] = item;
                nElems++;
            }
        }
        
        // 移除元素
        public long remove(){
            return queArray[--nElems];
        }
        
        // 查看元素
        public long peekMin(){
            return queArray[nElems-1];
        }
        
        public boolean isEmpty(){
            return nElems==0 ;
        }
        
        public boolean isFull(){
            return nElems==maxSize;
        }
                
        
    }
  • 相关阅读:
    redis——事务
    redis——队列
    linux安装mysql5.7
    转载:centos7yum默认为阿里云镜像
    redis——缓存穿透、缓存击穿、缓存雪崩
    redis——持久化
    redis——分布式锁
    并发编程实践
    Java并发包中线程同步器
    并发包中ScheduledThreadPoolExecutor
  • 原文地址:https://www.cnblogs.com/x-jingxin/p/6841104.html
Copyright © 2011-2022 走看看