| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> 数据结构与算法 -> 排序算法之:优先队列 -> 正文阅读 |
|
[数据结构与算法]排序算法之:优先队列 |
优先队列还蛮有意思.不过很多书看了以后也有点晕,所以这里写一篇心得来做个注解。 本质上就是每次排好序的队列。所以如果数据不多,我可以用任何数据结构排序,而如果数据比较多,那就应该用api中的二叉树数据结构。 通常队列是按照先后顺序,进行入列\出列操作.但是一旦入列以后,就没有办法再调整了. ? ?比如这个队列,就只能按照排列顺序出去. 假如我们要求有顺序,比如按照最大的出去怎么办? 显然每次,把队列里面的数据重新排列就行了.一种办法就是把队列数据都拿出来,然后进行排序,然后再入列. 新来一个数据,也需要进行重新排列. 这样的话,如果队列规模不大,那么在内存中是可以承受的. 但是如果在某些场景中,需要保持一个巨量的数据在内存中,那么把内存中这个队列每次都重新排列就不合适了. 但是对于一般的应用,我可以完全不用二叉堆来实现.完全可以用数组来实现 那么对于巨量的数据,都知道用树实现是比较合适的.对于已经排好的顺序,新来的数据,只需要和其中的部分结点数据进行比较就可以了.不涉及到内存中大规模数据的复制\移动等等操作. 优先队列的优先就是comparable接口的实现方式. _____________________________________________________________________________ 排序算法附注: ? ? ? ? 冒泡排序、插入排序、选择排序、快速排序(C语言的qsort,C++的sort函数)、归并排序(merge) ? ? ? ? 以及这一次的优先队列。 |
|
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 | -2024/11/25 23:15:30- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |