
DataStructure
文章平均质量分 67
Augusdi
让时间验证一切,让时间验证我。感谢大家的无私帮助,我愿以同样的态度回馈我热情的朋友,用我们的热忱开创美好未来!
展开
-
2021-05-10
学习算法之路(转)第一阶段:练经典常用算法,下面的每个算法给我打上十到二十遍,同时自己精简代码,因为太常用,所以要练到写时不用想,10-15分钟内打完,甚至关掉显示器都可以把程序打出来.1.最短路(Floyd、Dijstra,BellmanFord)2.最小生成树(先写个prim,kruscal要用并查集,不好写)3.大数(高精度)加减乘除4.二分查找. (代码可在五行以内)5.叉乘、判线段相交、然后写个凸包.6.BFS、DFS,同时熟练hash表(要熟,要灵活,代码要简)7.数学上的转载 2021-05-10 21:05:56 · 624 阅读 · 1 评论 -
2021-05-10
各种排序算法及其实现总结排序算法总结1.插入排序一般来说,插入排序 都采用in-place在数组上实现。具体算法描述如下:从第一个元素开始,该元素可以认为已经被排序取出下一个元素,在已经排序的元素序列中从后向前扫描如果该元素(已排序)大于新元素,将该元素移到下一位置重复步骤3,直到找到已排序的元素小于或者等于新元素的位置将新元素插入到该位置中重复步骤2如果比较操作 的代价比交换操作 大的话,可以采用二分查找法 来减少比较操作 的数目。该算法可以认为是插入排序 的一个变种,称为二.转载 2021-05-10 21:05:06 · 415 阅读 · 0 评论 -
2021-05-10
常见排序算法的稳定性分析和结论常见排序算法的稳定性分析和结论这几天笔试了好几次了,连续碰到一个关于常见排序算法稳定性判别的问题,往往还是多选,对于我以及和我一样拿不准的同学可不是一个能轻易下结论的题目,当然如果你笔试之前已经记住了数据结构书上哪些是稳定的,哪些不是稳定的,做起来应该可以轻松搞定。本文是针对老是记不住这个或者想真正明白到底为什么是稳定或者不稳定的人准备的。 首先,排序算法的稳定性大家应该都知道,通俗地讲就是能保证排序前2个相等的数其在序列的前后位置顺序和排序后它们两个...转载 2021-05-10 21:03:55 · 282 阅读 · 0 评论 -
2021-04-12
Java设计模式:23种设计模式全面解析(超级详细)设计模式(Design Pattern)是前辈们对代码开发经验的总结,是解决特定问题的一系列套路。它不是语法规定,而是一套用来提高代码可复用性、可维护性、可读性、稳健性以及安全性的解决方案。1995 年,GoF(Gang of Four,四人组/四人帮)合作出版了《设计模式:可复用面向对象软件的基础》一书,共收录了 23 种设计模式,从此树立了软件设计模式领域的里程碑,人称「GoF设计模式」。这 23 种设计模式的本质是面向对象设计原则.转载 2021-04-12 21:58:35 · 431 阅读 · 4 评论 -
2021-02-28
树与二叉树的深度优先与广度优先算法(递归与非递归)本博客前面文章已对树与二叉树有过简单的介绍,本文主要是重点介绍有关二叉树的一些具体操作与应用阅读本文前,可以先参考本博客 各种基本算法实现小结(三)—— 树与二叉树 和各种基本算法实现小结(二)—— 堆 栈二叉树深度层数、叶子数、节点数和广度优先算法以及树的先序、中序、后序的递归与非递归(深度优先)测试环境:VS2008(C)运行结果:================================...转载 2021-02-28 14:11:25 · 485 阅读 · 0 评论 -
2021-02-28
数组中最大和的子数组题目:输入一个整型数组,数据元素有正数也有负数,求元素组合成连续子数组之和最大的子数组,要求时间复杂度为O(n)。例如:输入的数组为1, -2, 3, 10, -4, 7, 2, -5,最大和的连续子数组为3, 10, -4, 7, 2,其最大和为18。背景:本题最初为2005年浙江大学计算机系考研题的最后一道程序设计题,在2006年里包括google在内的很多知名公司都把本题当作面试题。由于本题在网络中广为流传,本题也顺利成为2006年程序员面试题中经典中的转载 2021-02-28 14:08:25 · 404 阅读 · 0 评论 -
2021-02-28
数组中数对差最大题目:数组中某数字减去其右边的某数字得到一个数对之差,求所有数对之差的最大值。例如:数组{2, 4, 1, 16, 7, 5, 11, 9}中,数对之差的最大值是11(16 - 5)分析:看到这个题目,很多人的第一反应是找到这个数组的最大值和最小值,然后觉得最大值减去最小值就是最终的结果。但由于我们无法保证最大值一定位于数组的左边,因此这个思路不管用。让每一个数字逐个减去它右边的所有数字,并通过比较得到数对之差的最大值,总的时间复杂度是O(n2)。解法1:转载 2021-02-28 13:59:37 · 402 阅读 · 0 评论 -
2021-02-28
KMP字符串匹配算法KMP算法,Knuth-Morris-Pratt Algorithm,一种由Knuth(D.E.Knuth)、Morris(J.H.Morris)和Pratt(V.R.Pratt)三人提出的一种快速模式匹配算法。KMP朴素算法原理:子串pattern依次与目标串target中的字符比较,如果相等,继续比较下一个字符;如果不等,pattern右移一位,重新开始比较,直至匹配正确或超出target。示例:子串pattern={aabaa},目标串target={aaba...转载 2021-02-28 13:55:28 · 478 阅读 · 0 评论 -
2021-02-28
BTree,B-Tree,B+Tree,B*Tree都是什么B树、B-树、B+树、B*树都是什么B树即二叉搜索树:1.所有非叶子结点至多拥有两个儿子(Left和Right);2.所有结点存储一个关键字;3.非叶子结点的左指针指向小于其关键字的子树,右指针指向大于其关键字的子树;如:B树的搜索,从根结点开始,如果查询的关键字与结点的关键字相等,那么就命中;否则,如果查询...转载 2021-02-28 13:43:32 · 336 阅读 · 0 评论