数据结构和算法
文章平均质量分 88
DrawnBreak
这个作者很懒,什么都没留下…
展开
-
当我们练习算法题时,我们究竟在收获什么?
最近某公司内部出了一则通知, 大意是要求所有在岗的技术人员必须通过内部的一系列技术考试, 内容包括leetcode这类机制的上机编程题。如果规定时间内没通过,则可能被调离到其他岗位。 在寻找方法、攻略并进行练习时,不妨先思考一个问题, 备考的过程除了收获一个证书,我们还应该从中收获什么? 一、提升开发者自测能力 这类考试有一个特点,就是不会给出“错误用例”。 有时也会听到“为什么不能提示错误用例”之类的吐槽。 这种思维类似于"测试为什么没测出来这个bug" 、“缺少堆栈和日志,不能设断点,我没法排查这原创 2021-07-04 22:11:59 · 988 阅读 · 2 评论 -
动态规划到底是怎么想到的?
以后不定期更新一些算法方便自己的思考和总结。 相信大家练习可信上机题时,经常会发现题解里写着“动态规划”,里面一上来就是一个复杂的dp公式,对于新人来说除了说声 剩下就是疑惑,他是怎么想到这个公式的?我能想到吗?这玩意工作中有用吗? 加上“动态规划”这高端的名字,然后就劝退了不少试图去理解他的人。 动态规划听起来太吓人,可以换个说法 我在内心更喜欢叫他“状态缓存” 如果是服务开发,相信很熟悉这个词语, 利用缓存来加快一些重复的请求的响应速度。 而这个缓存的特点是 和其他缓存有所关联。 比如我们的服务要原创 2020-05-28 19:34:16 · 609 阅读 · 1 评论 -
4个数据结构的基本概念
1、vector怎么实现动态空间分布;vector容器基于数组实现,其元素在内存中连续存放,vector容器除了容器尾部之外,在其他任意位置插入或删除元素时,都需要移动该元素后面的所有元素。2、map用什么实现的;map容器指的是关联数组,所谓“关联”指的是元素的值与键之间的关联,通过键来访问值。用红黑树实现的。3、红黑树是什么,有什么特点;红黑树是一种自平衡二叉查找树,典型的用途是实现关联数组。...原创 2016-09-05 10:15:47 · 338 阅读 · 0 评论 -
堆排序
整体过程是这样:把数组弄成一个堆然后进行 len/2 次更新,这样能保证最顶端是最大的然后把最大的交换到最后。接着对L[1]进行堆更新,更新后L[1]将被置成第二大的然后再交换到最后,以此类推,直到全部更新完毕/PS:数组必须从1到n,而不是0到n-1 void HeapAdjust(int *L,int s,int m) { int rc=L[s]; //如果是升序,那么应该建立大顶堆,即顶...原创 2016-09-05 09:48:57 · 235 阅读 · 0 评论 -
归并排序
如果是递归类型的,那就是每次分一半一半一半,然后两两排序合并,得到结果排序过程:#define INF 9999999 void merge(int *L,int low,int mid,int high) { int n1,n2,i; int *Left,*Right; n1=mid-low+1;//前半段数量。+1是因为前半段是包括mid的! n2=high-mid; //后半段数量...原创 2016-09-04 15:43:52 · 239 阅读 · 0 评论 -
快速排序以及输出展示
枢轴我都用 |数字| 标出了,可以看出整个数组排序的过程int Partition(int *L,int low,int high) { int p=L[low]; //枢轴选取第一个即low while(low<high) //low>=high时说明排序完毕,必须退出 { //下面的2个while都必须记得加low<high的判断 while(...原创 2016-09-04 15:20:03 · 2118 阅读 · 0 评论
分享