堆排序

**注意:**如果不要求排好的大根堆必须是有序的,那么可以使用注释中的方法将时间复杂度从O(n*logn)降低到O(n)

语言提供的堆结构VS手写堆结构

相关题目

实现思路:

  1. k是多少,就把前k+1个数生成一个小根堆
  2. 从小根堆弹出最小值,放到数组0下标的位置
  3. 将第k+2个数加入小根堆,弹出最小值,放到数组1下标的位置
  4. 周而复始…

前缀树

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.堆、前缀树、桶排序、排序算法总结相关推荐

  1. 算法与数据结构07:前缀树,计数排序与桶排序

    算法与数据结构07:前缀树,计数排序与桶排序 前缀树 计数排序 桶排序 前缀树 Trie 1.根据字符串数组中,每个字符串的字符作为路径,组成而成的一个多叉树结构 2.每个节点都有一个paths数组, ...

  2. 【算法自由之路】前缀树 桶排序之计数排序和基数排序

    [算法自由之路]前缀树 & 桶排序之计数排序和基数排序 前缀树(字典树) 首先是前缀树,前缀树是由字符构成的树结构,它记录有多少前缀字符通过,以及有多少个同样的字符串,其找这类信息的时间复杂度 ...

  3. 【前缀树】写一个敏感词过滤器

    1.什么是敏感词过滤 这其实是一个很常见的功能,随处可见以至于你可能都没关注过,基本上在有评论的地方都会有它的身影. 举例来说,你打游戏和别人对喷的时候,是不是一些脏话发不出去哈哈,这些词汇会用*** ...

  4. 数据库索引数据结构总结——ART树就是前缀树

    数据库索引数据结构总结 from:https://zhewuzhou.github.io/2018/10/18/Database-Indexes/ 摘要 数据库索引是数据库中最重要的组成部分,而索引的 ...

  5. trie树查找前缀串_Trie数据结构(前缀树)

    trie树查找前缀串 by Julia Geist Julia·盖斯特(Julia Geist) A Trie, (also known as a prefix tree) is a special ...

  6. 分门别类刷leetcode——高级数据结构(字典树,前缀树,trie树,并查集,线段树)

    目录 Trie树(字典树.前缀树)的基础知识 字典树的节点表示 字典树构造的例子 字典树的前序遍历 获取字典树中全部单词 字典树的整体功能 字典树的插入操作 字典树的搜索操作 字典树的前缀查询 字典树 ...

  7. 【前缀树】C++ 数据结构 字典树

    之前有段时间力扣天天出字典树,当时写得特别熟练,几个月没做都忘得差不多了--今天又出了相关题目,正好复习一下. 文章目录 一.前缀树是什么? 二.实现前缀树 三.例题:添加与搜索单词 总结 一.前缀树 ...

  8. 【数据结构】前缀树/字典树

    目录 1.概述 2.代码实现 3.应用 本文参考: LeetCode 208.实现 Trie (前缀树) 1.概述 前缀树又称字典树.Trie 树.单词查找树,是一棵有根树,同时也是一种哈希树的变种, ...

  9. Trie(前缀树/字典树)及其应用

    from:https://www.cnblogs.com/justinh/p/7716421.html Trie,又经常叫前缀树,字典树等等.它有很多变种,如后缀树,Radix Tree/Trie,P ...

最新文章

  1. 网络流24题(1) P2756 飞行员配对方案问题
  2. 0513JS基础:数组内置方法、数学函数、时间函数
  3. Spring3.0 AOP 详解
  4. python3 修饰器_【python3】修饰器简单理解
  5. 腾讯云服务器数据盘买多了,腾讯云Windows云服务器数据盘分区和格式化
  6. Ubuntu系统下ntp服务器搭建
  7. 测网速还能拿奖励?测速 App 的新玩法
  8. 显示出eclipse文件层次
  9. 前端面试宝典(4)——必掌握
  10. VM14 安装黑苹果教程步骤
  11. 触屏查看大图(可以缩放)
  12. 淘客外卖返利小程序搭建 - 美团联盟外卖返利小程序平台、饿了么返利小程序系统、外卖cps小程序
  13. edge扩展下载失败或edge报错0x80072ee7
  14. Adjust接入注意事项
  15. 写作套路:如何写论文摘要
  16. 音视频开发之旅(36) -FFmpeg +OpenSL ES实现音频解码和播放
  17. 怎样制作BT种子文件,即torrent后缀的文件?
  18. 易点易动助力达达-京东到家打通全集团固定资产数字化管理全链条
  19. 使用c++实现复数类的运算
  20. 计算机主机突然断电有什么影响,电脑突然断电对硬件有影响吗?电脑突然断电的危害...

热门文章

  1. 方法Method(Java)
  2. vue项目中使用sass的方法
  3. devenv /ResetSkipPkgs
  4. 【分享】终端命令工具 自动生成vue组件文件以及修改router.js
  5. 201409-3-字符串匹配
  6. jetty9配置指南及jetty9部署jenkins
  7. Linux下设置文件权限
  8. AOP jdk动态代理
  9. 获取数据库链接Junit
  10. # 再次尝试 连接失败_新一代高效连接池HikariCP设计简要分析