【数据结构的魅力】004.堆、前缀树、桶排序、排序算法总结
堆排序
**注意:**如果不要求排好的大根堆必须是有序的,那么可以使用注释中的方法将时间复杂度从O(n*logn)降低到O(n)
语言提供的堆结构VS手写堆结构
相关题目
实现思路:
- k是多少,就把前k+1个数生成一个小根堆
- 从小根堆弹出最小值,放到数组0下标的位置
- 将第k+2个数加入小根堆,弹出最小值,放到数组1下标的位置
- 周而复始…
前缀树
1)前缀树v1.0
package calss02;public class TrieTree {public static class Node1 {public int pass;public int end;public Node1[] nexts;public Node1() {pass = 0;end = 0;//next[i] == null i方向的路不存在//next[i] != null i方向的路存在nexts = new Node1[26];}}public static class Trie1 {private Node1 root;public Trie1() {root = new Node1();}public void insert(String word) {if (word == null) {return;}char[] str = word.toCharArray();Node1 node = root;node.pass++;int path = 0;for (int i = 0; i < str.length; i++) {//从左往右遍历字符path = str[i] - 'a';if (node.nexts[path] == null) {node.nexts[path] = new Node1();}node = node.nexts[path];node.pass++;}node.end++;}//删除public void delete(String word) {if (search(word) != 0) {char[] chs = word.toCharArray();Node1 node = root;node.pass--;int index = 0;for (int i = 0; i < chs.length; i++) {index = chs[i] - 'a';if (--node.nexts[index].pass == 0) {//如果某一个中途节点的pass值为0,则连同那个节点之后的所有节点都可以直接舍弃node.nexts[index] = null;return;}node = node.nexts[index];}node.end--;}}//查找输入的字符串是否加入过public int search(String word) {if (word == null) {return 0;}char[] chs = word.toCharArray();Node1 node = root;int index = 0;for (int i = 0; i < chs.length; i++) {index = chs[i] - 'a';if (node.nexts[index] == null) {return 0;}node = node.nexts[index];}return node.end;}//查找所有加入的字符串中,有几个是以pre这个字符作为前缀的public int prefixNumber(String pre) {if (pre == null) {return 0;}char[] chs = pre.toCharArray();Node1 node = root;int index = 0;for (int i = 0; i < chs.length; i++) {index = chs[i] - 'a';if (node.nexts[index] == null) {return 0;}node = node.nexts[index];}return node.pass;}}}
2)前缀树v2.0
上面的算法,如果输入的字符只有a~z,那么可行,但是如果有别的字符,就会发生错误
怎么办呢? 用HashMap来实现
桶排序
桶排序 (Bucket sort)或所谓的箱排序,是一个排序算法,工作的原理是将数组分到有限数量的桶子里。每个桶子再个别排序(有可能再使用别的排序算法或是以递归方式继续使用桶排序进行排序)。桶排序是鸽巢排序的一种归纳结果。当要被排序的数组内的数值是均匀分配的时候,桶排序使用线性时间O(n)。但桶排序并不是比较排序,他不受到 O(n log n) 下限的影响。
排序算法的稳定性
排序算法总结
/归纳/7118703)结果。当要被排序的数组内的数值是均匀分配的时候,桶排序使用线性时间O(n)。但桶排序并不是比较排序,他不受到 O(n log n) 下限的影响。
排序算法的稳定性
排序算法总结
【数据结构的魅力】004.堆、前缀树、桶排序、排序算法总结相关推荐
- 算法与数据结构07:前缀树,计数排序与桶排序
算法与数据结构07:前缀树,计数排序与桶排序 前缀树 计数排序 桶排序 前缀树 Trie 1.根据字符串数组中,每个字符串的字符作为路径,组成而成的一个多叉树结构 2.每个节点都有一个paths数组, ...
- 【算法自由之路】前缀树 桶排序之计数排序和基数排序
[算法自由之路]前缀树 & 桶排序之计数排序和基数排序 前缀树(字典树) 首先是前缀树,前缀树是由字符构成的树结构,它记录有多少前缀字符通过,以及有多少个同样的字符串,其找这类信息的时间复杂度 ...
- 【前缀树】写一个敏感词过滤器
1.什么是敏感词过滤 这其实是一个很常见的功能,随处可见以至于你可能都没关注过,基本上在有评论的地方都会有它的身影. 举例来说,你打游戏和别人对喷的时候,是不是一些脏话发不出去哈哈,这些词汇会用*** ...
- 数据库索引数据结构总结——ART树就是前缀树
数据库索引数据结构总结 from:https://zhewuzhou.github.io/2018/10/18/Database-Indexes/ 摘要 数据库索引是数据库中最重要的组成部分,而索引的 ...
- trie树查找前缀串_Trie数据结构(前缀树)
trie树查找前缀串 by Julia Geist Julia·盖斯特(Julia Geist) A Trie, (also known as a prefix tree) is a special ...
- 分门别类刷leetcode——高级数据结构(字典树,前缀树,trie树,并查集,线段树)
目录 Trie树(字典树.前缀树)的基础知识 字典树的节点表示 字典树构造的例子 字典树的前序遍历 获取字典树中全部单词 字典树的整体功能 字典树的插入操作 字典树的搜索操作 字典树的前缀查询 字典树 ...
- 【前缀树】C++ 数据结构 字典树
之前有段时间力扣天天出字典树,当时写得特别熟练,几个月没做都忘得差不多了--今天又出了相关题目,正好复习一下. 文章目录 一.前缀树是什么? 二.实现前缀树 三.例题:添加与搜索单词 总结 一.前缀树 ...
- 【数据结构】前缀树/字典树
目录 1.概述 2.代码实现 3.应用 本文参考: LeetCode 208.实现 Trie (前缀树) 1.概述 前缀树又称字典树.Trie 树.单词查找树,是一棵有根树,同时也是一种哈希树的变种, ...
- Trie(前缀树/字典树)及其应用
from:https://www.cnblogs.com/justinh/p/7716421.html Trie,又经常叫前缀树,字典树等等.它有很多变种,如后缀树,Radix Tree/Trie,P ...
最新文章
- mysql两列查询结果列拼接一个表输出_sql select语句,查询出两列结果拼接在一起...
- 已解决:Unable to register authentication agent: GDBus.Error:org.freedesktop.PolicyKit1.Error.Failed:
- spring中的JdbcTemplate——JdbcTemplate的最基本用法
- An error has occurred while drawing:java.lang.IllegalStateException: The display list is not valid.
- 除了固定工资,如何利用自己的技术变现?
- mariadb10.2 mysql5.7_说说在MySQL5.7迁到MariaDB10.2时栽的一部分坑
- php封ip,php实现封IP功能[原创]
- nsis 固定到任务栏
- 学会python能做兼职工作无押金_各位第3期Python精英班的同学注意啦,你们找工作可要认真!...
- python-包机制
- 视频教程-安全策略(CCNA魔鬼训练营系列)-思科认证
- 微信小程序获取当前位置 地图定位导航-详细代码
- win10 安装pytorch gpu 及 解决报错“OSError: [WinError 126] 找不到指定的模块
- git reset, git status, git clean, .gitignore, git diff, git restore 的关系梳理
- NAACL 2021 Accepted Paper List
- 狂神说Linux笔记
- Linux arm cpu topology
- html5怎么调用cur指针,鼠标指针.cur.ani导出与制作
- Mysql_DML数据修改语言
- IMEI/MEID校验位计算