js队列实现优先级插入的方法

队列是先进先出.

在医院中排队的时候就是一个队列,最先排队的人,会先获得医生的治疗,这就是先进先出的队列

但是也有例外,当医院来了一位急救病人的时候,这个队列就需要做一些改进,改为最小优先队列,这样可以让急救病人首先获得医生的救治,从而保住性命.

现在用js来实现一个优先队列

        //优先队列
         function PriorityQueue(){
            var item = [];
            function QueueElement(element, priority){
                this.element = element;
                this.priority = priority;
            }

            this.enqueue = function(element , priority){
                var queueElement = new QueueElement(element,priority);

                if(item.length == 0){
                    item.push(queueElement);
                }else{
                    var added = false;
                    for(var i = 0; i<item.length; i++){
                        if(queueElement.priority < item[i].priority){
                            item.splice(i,0,queueElement);
                            added = true;
                            break;
                        }
                    }

                    if(!added){
                        item.push(queueElement);
                    }
                }
            };

            this.print = function(){
                return item;
            }
        }


         var priorityqueue = new PriorityQueue();
        console.log(priorityqueue);
        priorityqueue.enqueue('感冒病人',4);
        console.log(priorityqueue.print());
        priorityqueue.enqueue('流感病人',3);
        console.log(priorityqueue.print());
        priorityqueue.enqueue('急救病人1',1);
        console.log(priorityqueue.print());
        priorityqueue.enqueue('急救病人2',1);
        console.log(priorityqueue.print());
        priorityqueue.enqueue('感冒病人2',4);

 

 

热门文章

暂无图片
编程学习 ·

ASP.NET Core2.0项目实战-003

Views布局(Layouts)视图组件(ViewComponents)分部视图(PartialViews)HTML助手(HtmlHelpers) 页面标签的辅助类Tag助手(TagHelpers)配置全部视图(Global view configutation)视图找的时候如果home里面没有还会找shared文件夹里面的using System; using System.Colle…
暂无图片
编程学习 ·

[UML] 类图之间的关系 | 4.接口与实现关系

[UML] 类图之间的关系 | 4.接口与实现关系 4.接口与实现关系接口之间也可以有与类之间关系类似的继承关系和依赖关系接口和类之间存在一种实现(Realization)关系,在这种关系中,类实现了接口,类中的操作实现了接口中声明的操作在UML中,类与接口之间的实现关系用带空心三角形…
暂无图片
编程学习 ·

现代化程序开发笔记(13)——Git与Monorepo

本系列文章以我的个人博客的搭建为线索(GitHub 仓库:Evian-Zhang/evian-blog),记录我在现代化程序设计中的一些笔记。在这篇文章中,我将简要介绍代码版本管理利器Git,同时谈一谈Monorepo的工作方式。 代码版本管理工具 作为开发者,我们通常会遇到两种写代码的场景:一种…
暂无图片
编程学习 ·

MongoDB安装及服务配置

MongoDB安装官网下载:https://www.mongodb.com/download-center/community----介绍https://www.cnblogs.com/dreamsqin/p/10885038.html 安装到D盘MongoDB目录下,将D:\MongoDB\bin配置到环境变量path下 在MongoDB下创建data、log文件夹 测试MongDB是否安装成功 – 打开cmd命令…
暂无图片
编程学习 ·

JQuery——实现隔行换色

基础页面显示页面代码 <!DOCTYPE html> <html lang="en"> <head><meta charset="UTF-8"><title>隔行换色</title><script src="jquery-3.5.1.js"></script><style>table{margin: auto;wi…
暂无图片
编程学习 ·

TomCat学习笔记(1)--裸Tomcat框架实现和IDEA实现的比较

TomCat是什么不多说了,这里是用来记录我学习TomCat的操作与心路历程 本文对比演示用纯Tomcat和用IDEA集成开发同样的页面效果的两种方法。 在不用IDEA集成开发环境时稍微学习了一些tomcat,能写出一个界面并且用get、post函数试着传递数据。(在下文介绍一下流程并给予简单分析…
暂无图片
编程学习 ·

LCOF16 快速幂

链接 lcof16 快速幂 描述 实现函数double Power(double base, int exponent),求base的exponent次方。 分析十进制正整数n,二进制表示“bm…b3b2b1” 二进制转十进制,n = 1b1 + 2b2 + 4b3 + … + 2(m-1)bm 所以计算每一个二进制位的幂(x1,x2 ,x4,…),将所有位的幂相乘 利…
暂无图片
编程学习 ·

CentOS Liniux 使用john进行弱口令检测

什么是弱口令? 弱口令(weak password) 没有严格和准确的定义,通常认为容易被别人(他们有可能对你很了解)猜测到或被破解工具破解的口令均为弱口令。弱口令指的是仅包含简单数字和字母的口令,例如“123”、“abc”等,因为这样的口令很容易被别人破解,从而使用户的计算机面…
暂无图片
编程学习 ·

JavaScript(ES5)字符串的方法

字符串的方法toString 、indexOf 、lastIndexOf 、toUpperCase 、toLowerCase 、split 、replace 、substr 、substringtoString-----其他类型转换为字符串 let num = 837; let str = num.toString(); console.log(str);// 语法: 字符串变量名=非字符串变量.toString();【注】…
暂无图片
编程学习 ·

人工智能常用数据预处理

人工智能常用数据预处理一级目录正态化、标准化、归一化、正则化区别和作用 一级目录 1.读数据 2.合并训练和测试 2.填充空白数据 4.改变非数字为数字 5.去除无关数据 6.降为(合并相关数据) 7.正态化数据(碗圆) 正态化、标准化、归一化、正则化区别和作用 1.正态化归一化是…
暂无图片
编程学习 ·

ESP32使用MicroPython快速开发

Python基本语句一:Print语句:1. 输出字符串和数字>>>print("runoob") # 输出字符串runoob>>> print(100) # 输出数字100>>> str = runoob>>> print(str) # 输出变量runoob>>> L = [1,2,a] …
暂无图片
编程学习 ·

setuptools Command Reference

https://setuptools.readthedocs.io/en/latest/setuptools.html#command-reference alias - Define shortcuts for commonly used commands bdist_egg - Create a Python Egg for the project develop - Deploy the project source in “Development Mode” egg_info - Create …
暂无图片
编程学习 ·

项目实训——数据渲染数据引擎

项目实训——数据渲染数据引擎数据渲染layui卡片布局layui分页layui数据引擎遇到的问题 今天的任务就是要做出每个版块的页面。板块页面最重要就是数据的渲染。为了样式的统一,我继续使用layui,在这里用的是模板引擎laytpl。 数据渲染 layui卡片布局 为了美观,我使用了卡片式…
暂无图片
编程学习 ·

第四天:Spark Streaming

Spark Streaming概述 1. Spark Streaming是什么 Spark Streaming用于流式数据的处理。Spark Streaming支持的数据输入源很多,例如:Kafka、Flume、Twitter、ZeroMQ和简单的TCP套接字等等。数据输入后可以用Spark的高度抽象原语如:map、reduce、join、window等进行运算。而结果…
暂无图片
编程学习 ·

JavaScript之组合式继承

继承的概念 面向对象的三大特征:封装,继承,多态 封装: 将复杂的操作包裹起来,进行隐藏,简单化,安全化 继承: 拿来主义,自己没有,把别人的拿过来,让其成为自己的 JavaScript中有两种继承模型: 1.原型式继承 2.组合式继承 组合式继承就是将其他对象中的成员添加到自己…
暂无图片
编程学习 ·

企业实战--kubernetes(九)---存储(Secret)

一、Secret简介 Secret对象类型用来保存敏感信息,例如密码、OAuth令牌和ssh key。 敏感信息放在Secret中比放在Pod的定义或者容器镜像中来说更加安全和灵活。 Pod可以用两种方式来使用Secret: 作为volume中的文件被挂载到pod中的一个或多个容器中。 当kubelet为pod拉取镜像时…
暂无图片
编程学习 ·

DateUtil 时间工具类

时间工具类 /*** 操作时间工具类s*/ public class DateUtil extends DateUtils {//判断两个日期时间是否相距一天之内,一天之内返回true,否则反手falsepublic static boolean judgmentDate(String date1, String date2) throws Exception {SimpleDateFormat sdf = new Simple…