数据结构与算法
Mr_fengzi
人生苦短,我用Python
展开
-
算法的时间复杂度和性能分析
算法的引入我们举一个可能不太恰当的例子: 如果将最终写好运行的程序比作战场,我们码农便是指挥作战的将军,而我们所写的代码便是士兵和武器。 那么数据结构和算法是什么?答曰:兵法! 我们可以不看兵法在战场上肉搏,如此,可能会胜利,可能会失败。即使胜利,可能也会付出巨大的代价。我们写程序亦然:没有看过数据结构和算法,有时面对问题可能会没有任何思路,不知如何下手去解决;大部分时间可能解决了问题,可是对...原创 2019-07-09 22:36:47 · 2114 阅读 · 0 评论 -
算法——动态规划
动态规划(dynamic programming)是运筹学的一个分支,是求解决策过程(decision process)最优化的数学方法。下面我们通过具体的问题去学习应用动态规划。动态规划之Fib数列问题问题描述:有一个小孩上楼梯,共有N阶楼梯,小孩一次可以上1阶或2阶。走到N阶楼梯,一共有多少种走法?问题分析:自顶向下分析方式:爬到第N阶楼梯,一共只有2种情况(全划分...原创 2019-07-18 14:55:26 · 191 阅读 · 0 评论 -
贪心算法(Python实现)
贪心算法(Greedy Algorithme)含义:在对问题求解时,总是作出在当前看来是最好的选择。也就是说,不从整体上加以考虑,它所作出的仅仅是在某种意义上的局部最优解(是否是全局最优,需要证明)。下面我们通过具体的问题去应用贪心算法。最优装载问题问题描述:有一天海盗们截获了一艘装满各种各样古董的货船,每一件都价值连城,一旦打碎就是去了价值, 海盗船载重量为C,每件固定的重量...原创 2019-07-18 13:04:06 · 5907 阅读 · 0 评论 -
查找算法(Python实现)
查找表在日常生活中,几乎每天都要进行一些查找的工作,在电话簿中查阅某个人的电话在电脑的文件夹中查找某个具体的文件等等。查找表是由同一类型的数据元素构成的集合。例如电话号码簿和字典都可以看作是一张查找表。一般对于查找表有以下几种操作:在查找表中查找某个具体的数据元素; 在查找表中插入数据元素; 从查找表中删除数据元素。查找表术语静态查找表:在查找表中只做查找操作,而不改动...原创 2019-07-18 11:23:25 · 650 阅读 · 0 评论 -
Python解决八皇后问题
回溯法回溯法(探索与回溯法)是一种选优搜索法,又称为试探法,按选优条件向前搜索,以达到目标。但当探索到某一步时,发现原先选择并不优或达不到目标,就退回一步重新选择,这种走不通就退回再走的技术为回溯法。基本思想在回溯法中,每次扩大当前部分解时,都面临一个可选的状态集合,新的部分解就通过在该集合中选择构造而成。这样的状态集合,其结构是一棵多叉树,每个树结点代表一个可能的部分解,它的儿子...原创 2019-07-15 16:51:18 · 14441 阅读 · 3 评论 -
数据结构——树与二叉树
树与树算法树(tree)是一种抽象数据类型(ADT)或是实作这种抽象数据类型的数据结构,用来模拟具有树状结构性质的数据集合。它是由n(n>=1)个有限节点组成一个具有层次关系的集合。把它叫做“树”是因为它看起来像一棵倒挂的树,也就是说它是根朝上,而叶是朝下的。它具有以下的特点:每个节点有零个或多个子节点; 没有父节点的节点称为根节点; 每一个非根节点有且只有一个父节点; ...原创 2019-07-15 12:08:40 · 200 阅读 · 0 评论 -
数据结构——链表
链表顺序表的构建需要预先知道数据大小来申请连续的存储空间,而在进行空充时又需要进行数据的搬迁,所以使用起来并不是很灵活。而链表结构可以充分利用计算机内存空间,实现灵活的内存动态管理。链表的定义:链表(Linked List)是一种常见的基础数据结构,是一只种类线性表,但是不像顺序表一样连续存储数据,而是在每一个节点(数据存储单元)里存放下一个节点的位置信息(即地址)。链表的每个结...原创 2019-07-10 21:41:27 · 1035 阅读 · 0 评论 -
关于二叉树的几个经典例题详解
1.某二叉树的前序序列和后序序列正好相反,则该二叉树一定是( )的二叉树。 A.空或只有一个结点 B.高度等于其结点数 C.任一结点无左孩子 D.任一结点无右孩子正确答案:B详解:一棵具有N个结点的二叉树的前序序列和后序序列正好相反,则该二叉树一定满足该二叉树只有左子树或只有右子树,即该二叉树一定是一条链(二叉树的高度为N,高度等于结点数)。...原创 2019-07-13 22:34:23 · 10747 阅读 · 0 评论 -
数据结构——顺序表
数据结构问题 —> 数据结构 + 算法 == 程序 —> 解决问题算法是为了解决实际问题而设计的,数据结构是算法需要处理的问题载体。数据结构的分类:Python提供现成的数据结构类型叫做Python的内置数据结构,比如列表、元组、集合,字典。Python系统里面没有直接定义需要自定义的称为Python的扩展数据结构,比如栈,队列等。顺...原创 2019-07-10 00:41:46 · 499 阅读 · 0 评论 -
排序算法(Python实现)
排序算法什么是排序算法?假设含有n个记录的序列为{r1,r2,……,rn},其相应的关键字分别为{k1,k2,……, kn},需确定 1,2,……,n的一种排列p1,p2,……,pn,使其相应的关键字满足kp1≤ kp2≤……≤kpn(非递减或非递增)关系,即使得序列成为一个按关键字有序的序列 {rp1,rp2,……,rpn},也就是说把原来的序列根据某种规则进行重新排列,这样的操作就称为...原创 2019-07-17 22:38:32 · 373 阅读 · 0 评论