第一个题目,最经典的快排

以题目中给出的数据为例

4 2 4 5 1

假设我们以第一个数字4为参照物,大的放右边,小的放左边

2 1 4 4 5

第二次我们是把它分成两组,2 1 4 和5以我们最开始的那个4为分界线

第一组的2 1 4 我们以2为参照物,大的放右边,小的放左边

变成1 2 4

第二组的5只有一个也不需要动

最后就得到了排序后的结果

也就是1 2 4 4 5

基本原理就是这样

代码如下:

#include"bits/stdc++.h"
using namespace std;
int data[100005];
int change;
void sorting(int start,int end)
{if(start>=end)return ;int i=start;int j=end;while(i<j){while(data[j]>=data[start]&&i<j)j--;while(data[i]<=data[start]&&i<j)i++;{swap(data[i],data[j]);}}swap(data[start],data[i]);if(i>start)sorting(start,i-1);if(i<end)sorting(i+1,end);
}
int main()
{int n;scanf("%d",&n);for(int i=0;i<n;i++)scanf("%d",&data[i]);sorting(0,n-1);for(int  i=0;i<n;i++)printf("%d ",data[i]);
}

题目都写完了,

接下来就是今天自学的一些内容

第一个:哈夫曼树

哈夫曼树主要用来压缩编码的长度

以二进制为例:假设a是001,b是010,c是011,d是100,e是101,f是110,g是111

规定每3个为一段

如果有aaaaaaabbbbbbcccccddddeeeffg

7个a,6个b,5个c,4个d,3个e,2个f,1个g

一般编码出来就是

001 001 001 001 001 001 001 010 010 010 010 010 010 011 011 011 011 011 100 100 100 100 101 101 101 110 110 111

没有空格的长度就是001001001001001001001010010010010010010011011011011011100100100100101101101110110111

一共84个

我们要通过哈夫曼树来进行编码的话,首先就是要计算出每个单词在其中的个数

按照从小到大排列

根据出现次数最少的两个g和f生成一个根,根为所有叶子节点的次数总和

重复上面的步骤,连接最小的两个根,生成一个新的根

重复步骤

重复步骤

重复步骤

连接最后的两个

把位置调整一下,最终结果如下

这样就生成了一棵哈夫曼树

我们制定一个规则

左边为0,右边为1

根据从根节点到每一个节点,我们就得出了一套新的编码规则

a:11

b:01

c:101

d:100

e:001

f:0001

g:0000

观察一下就不难发现,出现次数比较多的都变短了,出现次数很少的变长了

我们继续那前面的来编码一下,看是不是会更短了

11111111111111010101010101101101101101101100100100100001001001000100010000

计算一下2*7+2*6+3*5+3*4+3*3+4*2+4=74,比前面的编码规则刚好少了十个

第二个内容就是字典树,又叫做前缀树

假设已知有一堆单词good  gold  goods  google goln

这样的一堆单词,请问以g开头的单词有哪些,以go开头的单词有哪些。

最简单的方法就是放把每个单词都放到数组里面去,然后一个一个的查找。如果单词的个数是n

需要查找的单词的长度为m那么时间复杂度就是n*m

单词量少一点就好说,但是单词量一旦大起来的话可能速度就不行了。像那些搜索引擎是如何快速定位关键的呢。

这种方法就是前缀树

画出来大概就是这样子

如果我们查找以g开头的话,我们就从g开始寻找

以go开头的话,我们先找g再找o就这样找下去。方法显然是要比放在数组里面要快很多

在每一个单词的结尾都会有一个标记,用来标记从开头到这里表示的是一个单词的结尾

比如说good和goods,d的位置有一个标记,s的位置也有一个标记。

如果还要把每一个单词输出的话,为了避免还需要回溯或者保留原有的字符

我们也可以在标记的同时保留这个整个单词

学习日记:2022年1月21日(快排)相关推荐

  1. 2022年4月21日,第14天

    2022年4月21日,第14天 [学习时长] 今日4h.累计59.5h. [代码数量] 今日0行.累计2340行. [学习内容] 今天正式进行JavaScript的学习.今天学习的内容是变更和数据类型 ...

  2. 今天是2022年5月21日

    今天是2022年5月21日,一个普通周6早上,多睡了会,9点11才起床.以下是梦: 又不记得开头了,梦到宝宝过来了,说找俺过日子,俺很开心~ 晚上,俺很害羞,让她和铜铜先睡觉,俺继续看电视,很累,上床 ...

  3. 2022年9月21日

    2022年9月21日 过程 依照谢宝友老师针对高负载所给出的模块功能,写了一个ebpf程序,重点在如何获取进程的栈和输出它.类似内核函数stack_trace_save_tsk和stack_trace ...

  4. 14届蓝桥青少选拔赛2022年8月21日C++中高级在线考试

    蓝桥青少2022年8月21日C++中高级在线考试 T1.编程实现:个位数 题目描述: 给定一个正整数N(10<N<1000),输出正整数个位上的数字. 输入描述 输入一个正整数N(10&l ...

  5. 2022年6月21日cloudflare 故障宕机事件记录 恭喜CF凭借一己之力,拉闸全球50%网络分发

    恭喜CF凭借一己之力,拉闸全球50%网络分发 本次受影响的范围: 根据 Downdetector 监测信息显示,包括Discord,.Shopify.Grindr.Fitbit 和 Peleton 等 ...

  6. 极客Linux日记-2022年1月2日

    --------今天是2022年1月2日 星期日 jumpserver部署到85% 资料搜集到4544G 公众号人数为1843人 学习,是需要持之以恒,提高自己需要方法,前期做正确的规划 坚持 我认为 ...

  7. JAVAEE千锋教育第一天学习总结(2022年7月11日)

    于2022年7月11日开始在前锋广州校区学习JAVAEE,并于今天开始写博客. 学习结束时间于2022年12月9日.为期5个月. 目的是为了完成每天总结作业--个人学习总结.以及5个月后回头看个人是否 ...

  8. 日记 [2008年01月21日]

    linux查看系统版本. #lsb_release -a #cat /proc/version #cat /etc/issue #cat /etc/redhat-realease(redhat才有的文 ...

  9. pmp每日三题(2022年2月21日)

    今日三题答案-CCC 1.创建项目章程的项目发起人需要已包含工作的成本估算.由于组织已经完成许多类似的项目,发起人寻求项目经理的帮助.项目经理应该使用什么来创建适合的估算? A.粗略量级估算(ROM) ...

最新文章

  1. Ubuntu安装rjava
  2. 未能在全局命名空间中找到类型或命名空间名称“Wuqi”
  3. html文件本质上是一个,html文件是什么
  4. GM6 1.38.1 start up debug - share memory
  5. intext:企业_企业中的微服务:敌是友?
  6. 火狐linux ubuntu16.04,在Ubuntu16.04系统上更新FireFox浏览器(即火狐浏览器)到最新版本...
  7. 什么是webpack? ----(webpack入门)
  8. HFSS器件导入Altium 教程
  9. 重启共享文件服务器,windows server 2008 文件服务器不定期出现大量CLOSE_WAIT状态的连接,必须重启服务器,客户端才能访问共享。...
  10. Android 音量控制
  11. numpy tolist()的用法
  12. 《算法导论3rd第十二章》二叉查找树
  13. OC 建议实现类似淘宝的物流步骤视图
  14. 基于机器学习算法的LTE高投诉小区预判方法
  15. Redis 配置文件解读
  16. 鲁毅智权力交接:对AMD的影响还将继续
  17. 2017 php 免费空间,免费空间免费php空间
  18. Oracle数据更新,表结构,约束
  19. (java)length与length() 的区别
  20. Cesium 获取当前视图的中心经纬度

热门文章

  1. python GMT时间格式转化
  2. 魔术表演的核心秘密(四)——障眼法的状态机描述
  3. 打完HPV疫苗有几天了,来分享下在香港买的战利品
  4. Nginx:http自动跳转到https
  5. 【HTML】鼠标特效
  6. 蓝桥杯Java——算法训练(ALGO997-1007)
  7. [连接 HarmpnyOS ]-使用 ADB+USB 进入华为鸿蒙系统
  8. 关于esxi / dsm / micro server gen8的乱七八糟
  9. 天猫DTC:冲破流量,冲向用户
  10. HTML <colgroup> 标签