队列的学习(二) 循环队列

简介: 队列的学习(二) 循环队列循环队列是一种基于数组实现的队列,相比于普通队列,它的插入和删除操作更加高效。循环队列可以避免在队列头部删除元素时进行大量的数据搬移操作,实现了队列的“循环利用”。

队列的学习(二) 循环队列

循环队列是一种基于数组实现的队列,相比于普通队列,它的插入和删除操作更加高效。循环队列可以避免在队列头部删除元素时进行大量的数据搬移操作,实现了队列的“循环利用”。

循环队列的实现

循环队列的实现需要定义一个数组、队列的头部和尾部指针,以及队列的长度。队列头部指针指向队列的第一个元素,队列尾部指针指向队列的最后一个元素的下一个位置。当队列为空时,头部和尾部指针相等;当队列已满时,头部指针和尾部指针相差1个位置。如下图所示:


循环队列的插入操作

当循环队列未满时,可以直接在队列尾部插入元素。插入操作的时间复杂度为O(1)。


循环队列的删除操作

当循环队列非空时,可以直接在队列头部删除元素。删除操作的时间复杂度为O(1)。


循环队列的应用举例

循环队列的应用场景非常广泛,以下是几个举例:


1. 手机短信发送

在手机短信发送时,短信服务端会将待发送的短信存储在循环队列中。每个短信的优先级不同,因此可以将短信按照优先级插入到循环队列的合适位置。在短信发送时,可以直接从队列头部取出短信进行发送。


2. 多线程任务调度

在多线程任务调度时,可以使用循环队列来存储待执行的任务。每个任务的优先级不同,因此可以将任务按照优先级插入到循环队列的合适位置。在任务执行时,可以直接从队列头部取出任务进行执行。


3. 缓存淘汰算法

在缓存淘汰算法中,可以使用循环队列来存储缓存条目。每个缓存条目有一个访问时间戳,可以将最早访问的缓存条目放在队列头部,最近访问的缓存条目放在队列尾部。在缓存满时,可以直接从队列头部淘汰缓存条目。


总结

循环队列是一种高效的队列实现方式,可以避免普通队列在删除元素时进行数据搬移操作。循环队列的应用场景非常广泛,例如手机短信发送、多线程任务调度和缓存淘汰算法等。

相关文章
|
数据安全/隐私保护
公钥和私钥的作用和区别
公钥和私钥的作用和区别
1372 0
|
缓存 安全 PHP
攻防世界06-get_post
攻防世界06-get_post
|
存储 安全 Java
Java HashSet详解
`HashSet` 是 Java 中基于哈希表实现的 `Set` 接口集合,主要用于存储不重复元素,提供快速查找、插入和删除操作。它具有以下特点:不允许重复元素,元素无序,允许一个 `null` 元素,常用操作包括创建、添加、删除、检查元素及清空集合。由于其内部使用哈希表,基本操作的时间复杂度接近 O(1),性能高效。然而,`HashSet` 不保证元素顺序,也不是线程安全的,适用于需要快速访问和操作的场景。
513 10
|
人工智能 Java Spring
使用 Spring Cloud Alibaba AI 构建 RAG 应用
本文介绍了RAG(Retrieval Augmented Generation)技术,它结合了检索和生成模型以提供更准确的AI响应。示例中,数据集(包含啤酒信息)被加载到Redis矢量数据库,Spring Cloud Alibaba AI Starter用于构建一个Spring项目,演示如何在接收到用户查询时检索相关文档并生成回答。代码示例展示了数据加载到Redis以及RAG应用的工作流程,用户可以通过Web API接口进行交互。
53222 160
|
11月前
|
人工智能 监控 小程序
分享5款最近整理出来的实用软件
本文介绍了五款实用的软件工具:便签工具Sticky Notes、Dock工具Bitdock、在线AI工具箱3171.CN、自动化脚本工具AutoIt和硬盘监控工具Hard Disk,涵盖从日常记录、桌面管理到系统维护等多个方面,满足不同用户需求。
253 5
|
内存技术
STM32CubeMX flash的使用
STM32CubeMX flash的使用
726 10
|
机器学习/深度学习 算法 数据挖掘
算法金 | 欧氏距离算法、余弦相似度、汉明、曼哈顿、切比雪夫、闵可夫斯基、雅卡尔指数、半正矢、Sørensen-Dice
**摘要:** 了解9种距离和相似度算法:欧氏距离、余弦相似度、汉明距离、曼哈顿距离、切比雪夫距离、闵可夫斯基距离、雅卡尔指数、半正矢距离和Sørensen-Dice系数。这些算法在机器学习、文本分析、图像处理和生物学等领域各有应用。例如,欧氏距离用于KNN和K-Means,余弦相似度用于文本相似性,汉明距离在错误检测中,曼哈顿距离在数据挖掘,切比雪夫距离在棋盘游戏,闵可夫斯基距离通过调整参数适应不同场景,雅卡尔指数和Sørensen-Dice系数用于集合相似度。每种算法有其优缺点,如欧氏距离对异常值敏感,余弦相似度忽略数值大小,汉明距离仅适用于等长数据。
551 2
算法金 | 欧氏距离算法、余弦相似度、汉明、曼哈顿、切比雪夫、闵可夫斯基、雅卡尔指数、半正矢、Sørensen-Dice
|
缓存 监控 Java
即时编译(JIT):从源代码到高效执行的神奇之旅(上)
即时编译(JIT):从源代码到高效执行的神奇之旅(上)
|
算法 安全 网络安全
概念区分:对称加密、非对称加密、公钥、私钥、签名、证书
概念区分:对称加密、非对称加密、公钥、私钥、签名、证书
1747 0
|
Ubuntu 网络安全 数据安全/隐私保护
使用WinSCP工具,将windows文件传输到虚拟机Ubuntu系统
使用WinSCP工具,将windows文件传输到虚拟机Ubuntu系统
2526 4