JS优先队列排序。出队时,先找出优先级最高的元素,再按照先进先出出队。

/*
* 优先队列
* 出队时,先找出优先级最高的元素,再按照先进先出出队。
* */
function Queue(){
this.dataStore = [];//存放队列的数组,初始化为空
this.enqueue = enqueue;//向队列尾部添加一个元素
this.dequeue = dequeue;//出队时,先找出优先级最高的元素,再按照先进先出出队。
this.theFront = theFront;//读取队首的元素
this.back = back;//对取队尾的元素
this.toStrings = toStrings;//显示队列内的所有元素
this.empty = empty;//判断队列是否为空
}
/*先定义存储队列元素的对象*/
function Patient(name,code){
this.name = name;//code是一个整数,表示患者的优先级
this.code = code;
} function enqueue(element){
this.dataStore.push(element);
} function dequeue(){
var minindex = 0;
var priority = this.dataStore[0].code;
for(var i = 1;i<this.dataStore.length;i++){
if(this.dataStore[i].code < priority){
priority = this.dataStore[i].code;
minindex = i;
}
}
return this.dataStore.splice(minindex,1);
} function theFront(){
return this.dataStore[0];
} function back(){
return this.dataStore[this.dataStore.length-1];
} function toStrings(){
return this.dataStore;
} function empty(){
if(this.dataStore.length == 0){
return true;
}else{
return false;
}
} /*优先队列的实现*/
var ed = new Queue();
var p = new Patient("aa",5);
ed.enqueue(p);
var p = new Patient("bb",4);
ed.enqueue(p);
var p = new Patient("cc",3);
ed.enqueue(p);
var p = new Patient("dd",3);
ed.enqueue(p);
var p = new Patient("ee",1);
ed.enqueue(p);
console.log(ed.toStrings());
console.log(ed.dequeue());//[ Patient { name: 'ee', code: 1 } ]
console.log(ed.dequeue());//[ Patient { name: 'cc', code: 3 } ]
console.log(ed.dequeue());//[ Patient { name: 'dd', code: 3 } ]

JS优先队列排序。出队时,先找出优先级最高的元素,再按照先进先出出队。的更多相关文章

  1. 解决IOS safari在input focus弹出输入法时不支持position fixed的问题

    该文章为转载 我们在做移动web应用的时候,常常习惯于使用position:fixed把一个input框作为提问或者搜索框固定在页面底部.但在IOS的safari和webview中,对position ...

  2. js数组操作-找出一组按不同顺序排列的字符串的数组元素

    从一组数组中找出一组按不同顺序排列的字符串的数组元素将字符串转换成数组后再对数组进行 sort 排序,abcd 和 bdca 使用 sort 排序后会变成 abcd,将拍好序的字符串作为对象的 key ...

  3. UESTC 1599 wtmsb【优先队列+排序】

    题目链接:UESTC 1599 wtmsb 题意:给你一组数,每一次取出两个最小的数,将这两个数的和放入这组数中,直到这组数只剩下一个,求最后剩下那个数的大小! 分析:比赛的时候首先我就看到这道题数据 ...

  4. iOS下Html页面中input获取焦点弹出键盘时挡住input解决方案—scrollIntoView()

    问题描述 iOS系统下,移动web页面,inpu获取焦点弹出系统虚拟键盘时,偶尔会出现挡住input的情况,尽管概率不大,但是十分影响用户体验. 问题重现 原始页面:页面中有header.main.f ...

  5. iOS下Html页面中input获取焦点弹出键盘时挡住input解决方案

    问题描述 iOS系统下,移动web页面,inpu获取焦点弹出系统虚拟键盘时,偶尔会出现挡住input的情况,尽管概率不大,但是十分影响用户体验. 问题重现 原始页面:页面中有header.main.f ...

  6. JS的排序算法

    排序是最基本的算法(本文排序为升序Ascending),常见的有以下几种: 1.冒泡排序 Bubble Sort 2.选择排序 Selection Sort 3.插入排序 Insertion Sort ...

  7. MUI - 解决弹出输入法时页面高度变小导致底部上浮的问题

    解决弹出输入法时页面高度变小导致底部上浮的问题 在有输入框的页面,当输入法弹出的时候,底部元素上浮遮盖了输入框,影响页面美观及功能.查找了一下,页面变窄是不可避免的.即使是设置绝对固定也是不可以的.因 ...

  8. CodeForces - 721D 贪心+优先队列(整理一下优先队列排序情况)

    题意: 给你一个长度为n的数组,你可以对其中某个元素加上x或者减去x,这种操作你最多只能使用k次,让你输出操作后的数组,且保证这个数组所有元素的乘积尽可能小 题解: 在这之前我们要知道a*b>a ...

  9. chart.js插件生成折线图时数据普遍较大时Y轴数据不从0开始的解决办法[bubuko.com]

    chart.js插件生成折线图时数据普遍较大时Y轴数据不从0开始的解决办法,原文:http://bubuko.com/infodetail-328671.html 默认情况下如下图 Y轴并不是从0开始 ...

随机推荐

  1. C语言之预处理命令与用typedef命名已有类型

    预处理命令 主要是改进程序设计环境,以提高编程效率,不属于c语言本身的组成部分,不能直接对它们进行编译,必须在对 程序编译之前,先对程序中的这些特殊命令进行“预处理”.比如头文件. 有以下三类:宏定义 ...

  2. 基于SceneControl的三维GIS开发

    在ArcGIS体系中,三维开发包括两种:基于Scene的三维开发和基于Globe的三维开发. 由上图可以看出,两种开发的接口都很相似,掌握了Scene开发会相对容易的过渡到Globe开发中. 正如上图 ...

  3. Sensor fusion(传感器融合)

    From Wikipedia, the free encyclopedia 来自维基百科,免费的百科Sensor fusion is combining of sensory data or data ...

  4. Java对象的serialVersion序列化和反序列化

    Java基础学习总结——Java对象的序列化和反序列化 一.序列化和反序列化的概念 把对象转换为字节序列的过程称为对象的序列化. 把字节序列恢复为对象的过程称为对象的反序列化. 对象的序列化主要有两种 ...

  5. DXDBGrid使用方法

    http://www.cnblogs.com/gtsup/archive/2012/08/28/2660197.html dxDBGrid使用集锦   转载自:http://hi.baidu.com/ ...

  6. Java动态绑定与静态绑定

    Java动态绑定来自于继承体现,子类继承父类,子类重新覆盖了父类的方法,就是动态绑定,以下举例: (动态绑定是在运行期间) 动物类: /** * 创建一个动物类 * @author Liudeli * ...

  7. [LeetCode] Unique Paths && Unique Paths II && Minimum Path Sum (动态规划之 Matrix DP )

    Unique Paths https://oj.leetcode.com/problems/unique-paths/ A robot is located at the top-left corne ...

  8. N个不同球取出M个的组合个数求解

    Technorati 标签: 组合,概率 从N个不同的球中取出M个,一共有多少种取法? 这个问题是组合数据的基本问题,考虑拿出球是否放回,拿出去的球是否有序,它有4种变体: 不放回,有序: 不放回,无 ...

  9. 为某金融企业的IT技术部人员提供基于TFS的软件研发流程介绍

    受莫金融企业IT信息技术部的邀请,为该金融企业的某省分公司.地市分公司的IT技术人员提供了一场基于TFS的软件研发流程的技术培训,希望可以借此提高该企业的软件研发.运维水平,同时推动企业软件研发信息化 ...

  10. ASP.NET Web API 2.0 统一响应格式

    传统实现 在搭建 Web API 服务的时候,针对客户端请求,我们一般都会自定义响应的 JSON 格式,比如: { "Data" : { "Id" : 100, ...