分享web开发知识

注册/登录|最近发布|今日推荐

主页 IT知识网页技术软件开发前端开发代码编程运营维护技术分享教程案例
当前位置:首页 > 运营维护

用js实现个优先队列吧

发布时间:2023-09-06 02:15责任编辑:熊小新关键词:js

队列是一种很常用的数据结构,它是一组遵循先进先出(FIFO)规则的项。在现实生活中,最常见的队列的例子就是排队。队列有一些方法,入队、出队、队列的长度,清空队列等。用js实现一个普通的队列代码如下:

 function Queue() { ???????????var queue = []; ???????????// 队列元素个数 ???????????this.size = function () { ???????????????return queue.length; ???????????}; ???????????// 入队 ???????????this.enqueue = function (item) { ???????????????queue.push(item); ???????????}; ???????????// 出队 ???????????this.dequeue = function () { ???????????????queue.shift(); ???????????}; ???????????// 队列是否为空 ???????????this.isEmpty = function () { ???????????????return !queue.length; ???????????}; ???????????// 队列第一个元素 ???????????this.front = function () { ???????????????return queue[0]; ???????????}; ???????????// 清空队列 ???????????this.clear = function () { ???????????????queue = []; ???????????} ???????}

如果是优先队列,其实就是 给每个需要排队的元素加个优先级,优先级高的在前面,优先级低的就只好在后面了。队列的其他方法不变,只是入队的方法变了,需要根据元素的优先级排队,实现代码如下:

 ???????function PriorityQueue() { ???????????var queue = []; ???????????this.enqueue = function (item) { ???????????????if (this.isEmpty()) { ???????????????????queue.push(item); ???????????????} else { ???????????????????var flag = false; //判断是否排队 ???????????????????for (let i = queue.length - 1; i > 0; i--) { ???????????????????????if (queue[i].priority <= item.priority) { ???????????????????????????queue.splice(i, 0, item); ???????????????????????????flag = true; ???????????????????????????break; ???????????????????????} ???????????????????} ???????????????????// 循环后未入队,优先级最大,插入到第一位 ???????????????????if (!flag) { ???????????????????????queue.unshift(item); ???????????????????} ???????????????} ???????????};

用js实现个优先队列吧

原文地址:https://www.cnblogs.com/renbo/p/9669610.html

知识推荐

我的编程学习网——分享web前端后端开发技术知识。 垃圾信息处理邮箱 tousu563@163.com 网站地图
icp备案号 闽ICP备2023006418号-8 不良信息举报平台 互联网安全管理备案 Copyright 2023 www.wodecom.cn All Rights Reserved