
数据结构及经典算法:C语言实现
文章平均质量分 89
有时需要偏执狂
一定要搞懂,千万不要心存侥幸,否则一些问题会让你痛苦不堪(源码面前,了无秘密)。
拥有一某三分地不容易,贵在坚持。
展开
-
第1章 导论
这系列博客主要记录自己学习《算法:c语言实现》的过程。 学习方法有二: 1、Robert Sedgewick普林斯顿大学公开课,课程链接见B站,带有中文字幕高大上 2、阅读课本:《算法:C语言实现第1-4部分》、《算法:C语言实现第5部分》连通性问题描述:假如一个整数对序列,其中整数代表某种类型的一个对象(如计算机中的网络接口),序列连通性可以代表网络接口是否连通,这种问题在实际中应用很广。并原创 2017-10-19 16:05:42 · 416 阅读 · 0 评论 -
算法之大数据部分
占楼原创 2018-04-16 20:36:28 · 160 阅读 · 0 评论 -
经典DP问题求解
1、求连续子数组的最大和 2、最长公共子序列 1、子序列: 一个序列A = a1,a2,……an,中任意删除若干项,剩余的序列叫做A的一个子序列。也可以认为是从序列A按原顺序保留任意若干项得到的序列,子序列与原序列顺序相同,但是不必是连续的 例如: 对序列 1,3,5,4,2,6,8,7来说,序列3,4,8,7 是它的一个子序列。 对于一个长度为n的序列,它一共有2^n 个子序列,有...原创 2018-04-08 09:42:46 · 5438 阅读 · 0 评论 -
数据结构之链表
链表:将很多块内存区域通过指针的形式连接起来。其中在每块没存区域都存储了上一块数据或者下一块数据的地址,链表的优点在于删除元素和添加元素都非常快速。为了写出鲁棒性好的程序,防御性编程很重。对于指针必须考虑当指针为空的情况,对于字符串考虑内容为空的情况。对于链表的题目大多数都是通过遍历解决的。理解链表的练习题1、求单链表中的倒数第k个节点 输入一个键表,输出该链表中倒数第k个...原创 2018-03-05 14:41:12 · 1102 阅读 · 0 评论 -
数据结构之树
https://blog.youkuaiyun.com/xiaominkong123/article/details/51567437 https://www.cnblogs.com/gl-developer/p/7259251.html https://www.cnblogs.com/fly-me/p/wei-ti-jiaoer-cha-shu-de-si-zhong-bian-li-fang-fa.h...原创 2018-03-05 14:41:45 · 592 阅读 · 0 评论 -
数据结构之栈和队列
占位原创 2018-03-05 14:42:08 · 219 阅读 · 0 评论 -
数据结构之哈希表
占位原创 2018-03-05 14:42:50 · 336 阅读 · 0 评论 -
数据结构之数组
数组可以说是最简单的一种数据结构,它占据一块连续的内存并按照顺序存储数据。创建数组时,我们需要首先指定数组的容量大小,然后根据大小分配内存。即使我们只在数组中存储一个数字,也需要为所有的数据预先分配内存。因此数组的空间效率不是很好 , 经常会有空闲的区域没有得到充分利用。 深入理解数组题目1、二维数组中的查找 题目:在一个二维数组中,每一行都按照从左到右递增的顺序排序,每一列都按...原创 2018-03-12 14:14:32 · 1052 阅读 · 0 评论 -
数据结构之字符串
字符串算法简介字符串排序键索引计数法应用领域: 1、通过字符串一个字符排序。 2、将全班同学按组分类。 3、通过地区码排序电话号码。 这是一种用于小整数键的排序方法。只需要理解下面的实际问题即可理解键索引计数法排序。 对于ASCII字符,我们可以直接用ASCII对应的数值作为键,初始化count数组,然后在数组里面记录,每一个ASCII字符出现的次数...原创 2017-12-24 21:57:41 · 753 阅读 · 0 评论 -
算法之经典图算法
图介绍 图:是一个顶点集合加上一个连接不同顶点对的边的集合组成。定义规定不允许出现重复边(平行边)、连接到顶点自身的边(自环),定义了一个简单图。 自环:连接到顶点自身的边。 平行边:连接同一对顶点的两条边,含有平行边的图称为多重图。 顶点的度数:依附于它的边的总数。 顶点连通:两个顶点之间存在一条连接双方的路径。 连通图:任意一个顶点都存在一条路径到达另一个...原创 2017-11-14 11:38:55 · 22545 阅读 · 6 评论 -
算法之经典查找算法
符号表 现代计算机和网络使得我们可以访问检索海量的信息。这些信息都存储在符号表(一个抽象的表格)中。实现一张高效的符号表,就是实现高效的查找插入任务。可以利用三种经典的数据结构:二叉查找树,红黑树,散列表实现符号表。 符号表:存储键值对(键和值根据不同应用可以不同)的数据结构,支持插入(一组新的键值存入表)和查找(通过给定键获取对应的值)。 有序符号表:符号表中数据...原创 2017-11-09 19:10:40 · 2004 阅读 · 1 评论 -
基础数据结构
数组解决素数问题:很久以前,希腊数学家厄拉多塞(Eeatosthese)想到了一个非常美妙的质数筛法,减少了逐一检查每个数的的步骤,可以比较简单的从一大堆数字之中,筛选出质数来,这方法被称作厄拉多塞筛法(Sieve of Eeatosthese)。 具体操作:先将 2~n 的各个数放入表中,然后在2(第一个素数)的上面画一个圆圈,然后划去2(这是合数了)的其他倍数;第一个既未画圈又没有被划去的数是原创 2017-10-25 18:40:10 · 376 阅读 · 0 评论 -
数据结构与算法关系及其分析
简单关系 算法描述一种有限、确定、有效的并适用于计算机程序来解决问题的方法。大多数的算法都需要适当的组织数据,而为了组织数据就产生了数据结构。所以说实现一个良好的算法,不仅需要良好的思想还需要对应良好的数据结构。时间复杂度和空间复杂度 具体的推倒过程真的没有必要去理解,我们只要可以通过感性的去理解,当算法输入数据量巨大的时候,可以通过一个简单的表达式表示算法的效率即可,毕竟我...原创 2017-10-23 10:38:04 · 855 阅读 · 0 评论 -
算法开始篇
这系列博客主要记录自己学习《算法:c语言实现》的过程。 主要参考:1、Robert Sedgewick普林斯顿大学公开课,课程链接见B站。 2、算法:Java描述第四版 入门经典书籍,虽然代码是java写的,但是并没有涉及太多java,代码依然具有通用性,很容易移植到c++、c。1和2结合一起看,2很大部分相当于1的课件。 3、课本:《算法:C语言实现第1-4部分》、《算法:C语言实现第5原创 2017-12-03 16:01:49 · 348 阅读 · 0 评论 -
算法之经典算法思想
递归分治法动态规划参考: https://blog.youkuaiyun.com/lz161530245/article/details/76943991 https://blog.youkuaiyun.com/hrn1216/article/details/51534607 重点参考文章。 https://www.zhihu.com/question/23995189 知乎好的解释动态规...原创 2017-12-01 21:39:20 · 1585 阅读 · 0 评论 -
算法之经典排序算法
基本排序算法选择排序 首先,找出数组中的最小元素,并用首位的元素与它交换。然后,从后面找出次大元素,并用第二个位置的元素与它变换。重复此步骤,直到排序完整个数组。这个方法称做选择排序(selection sort),因为它重复性地选择剩余元素中的最小元素来完成排序。插入排序 人们通常排列扑克的方法是一次考虑一张牌,将它插入到已经排序过的牌的适当位置中(时刻保持...原创 2017-11-03 19:12:37 · 855 阅读 · 2 评论 -
Bitmap和BloomFilter
题目5TB的硬盘上放满了数据,请写一个算法将这些数据进行排重。如果这些数据是一些32bit大小的数据该如何解决?如果是64bit的呢?1、BitmapBitmap又叫做位图,判断数组中的某位索引值下的位是否为1,来表示这个数是否存在。假如53存在,那么就将数组中的第53位置1。这样Bitmap极大地压缩了所需要的内存空间,并且还额外地完成了对原始大型数据的排序工作。使用位图可以大大节省...原创 2018-06-20 20:03:23 · 1615 阅读 · 0 评论