数据结构和算法_完结
文章平均质量分 80
独孤呆博
机器学习学习者,分享学习心得,欢迎大家分享讨论~
展开
-
9. 栈和队列(3)
1. 队列的定义 队列(queue)是只允许在一端进行插入操作,而在另一端进行删除操作的线性表。与栈相反,队列是一种先进先出(First In First Out, FIFO)的线性表。与栈相同的是,队列也是一种重要的线性结构,实现一个队列同样需要顺序表或链表作为基础。我们的输入缓冲区接受键盘的输入就是按队列的形式输入和输出的,不然的话就很容闹出问题。例如有一天你突然心血来潮,用企鹅发了一句“Yo原创 2018-01-30 22:30:04 · 196 阅读 · 0 评论 -
28. 排序算法(1):总体介绍
本文从总体上介绍排序算法,包括有排序算法的概念,排序的稳定性以及影响排序算法性能的几个要素原创 2018-03-06 21:05:03 · 283 阅读 · 0 评论 -
22. 图(4):最小生成树
在这里主要介绍两种得到最小生成树的方法,即普里姆算法和克鲁斯卡尔算法。在这里,需要解决的问题是在下面的图中找出连接所有节点的最小生成树原创 2018-02-27 22:10:12 · 1848 阅读 · 4 评论 -
29. 排序算法(2):冒泡排序
1. 直观的想法 一个直观的想法是从第一个位置开始,用这个位置的元素与后面的每一个元素进行比较,如果后面的数字比这个数字小的话,就将它调换到前面,具体过程如下图所示的初始数组 相当于将第一个位置的元素与之后的每一个元素进行比较,选出最小的最为第一个位置的元素。具体来说,首先 5 比 2 大,将 2 ,5 的位置互换。 之后 2 比 6 小不用动,而 2 比 0 小,所以 2 , ...原创 2018-03-07 21:45:03 · 317 阅读 · 0 评论 -
30. 排序算法(3):选择排序
介绍选择排序的原理及实现代码原创 2018-03-07 22:22:43 · 260 阅读 · 0 评论 -
31. 排序算法(4):直接插入排序
直接插入排序的基本原理及代码实现原创 2018-03-08 09:59:47 · 251 阅读 · 0 评论 -
32. 排序算法(5):希尔排序
介绍希尔排序的基本原理及代码实现原创 2018-03-08 11:07:45 · 220 阅读 · 0 评论 -
20. 图(2):图的储存结构
图的存储结构相比较线性表与树来说就复杂很多。我们回顾下,对于线性表来说,是一对一的关系,所以用数组或者链表均可简单存放。树结构是一对多的关系,所以我们要将数组和链表的特性结合在一起才能更好的存放。那么我们的图,是多对多的情况,另外图上的任何一个顶点都可以被看作是第一个顶点,任一顶点的邻接点之间也不存在次序关系。如下图所示 我们可以看出,这四幅图实际上是相同的图。因为任意两个顶点之间都可能存在联系,原创 2018-02-20 21:02:09 · 352 阅读 · 0 评论 -
33. 排序算法(6):堆排序
堆排序的原理及实现代码原创 2018-03-08 22:52:26 · 343 阅读 · 0 评论 -
21. 图(3):图的遍历
图的遍历通常有两种方案:即深度优先遍历和广度优先遍历。原创 2018-02-22 21:53:21 · 222 阅读 · 0 评论 -
23. 图(5):最短路径
在网图和非网图中,最短路径的含义是不同的。网图是两顶点经过的边上权值之和最少的路径;非网图是两顶点之间经过的边数最少的路径。我们把路径起始的第一个顶点称为源点,最后一个顶点称为终点。关于最短路径的算法,我们会介绍两种:迪杰斯特拉算法(Dijkstra)与弗洛伊德算法(Floyd)原创 2018-03-01 19:25:57 · 390 阅读 · 0 评论 -
34. 排序算法(7):归并排序的递归实现
1. 基本原理 归并排序 (Merge Sort) 就是利用归并的思想实现的排序方法。他的原理是假设初始序列有 n 个记录,则可以看成是 n 个有序的子序列,每个子序列的长度为1,然后两两归并,得到 ⌈n/2⌉⌈n/2⌉\lceil n/2 \rceil个长度为1 或者2 的有序子序列;再两两归并,……,如此重复,直至得到一个长度为 n 的有序序列为止,这种排序 方法称为 2 路归并排序。...原创 2018-03-10 10:40:30 · 523 阅读 · 0 评论 -
35. 排序算法(8):归并排序的迭代实现
归并排序的迭代方法的原理及实现原创 2018-03-10 16:48:43 · 4842 阅读 · 2 评论 -
36. 排序算法(9):快速排序
快速排序的原理及代码实现原创 2018-03-10 20:28:54 · 346 阅读 · 0 评论 -
37. 排序算法总结回顾
对排序算法的稳定性,排序算法的分类以及性能进行了总结原创 2018-03-10 21:51:55 · 342 阅读 · 0 评论 -
25. 二叉排序树
介绍二叉排序树的查找,插入,删除原创 2018-03-04 19:01:18 · 533 阅读 · 0 评论 -
24. 查找算法
本文主要介绍查找技术,主要包括顺序查找,折半查找法,插值查找(按比例查找),斐波那契查找(黄金分割法查找)。原创 2018-03-04 10:19:14 · 414 阅读 · 0 评论 -
27. 散列表(哈希表)查找
散列表的相关概念,构造散列表的两个基本原则及具体方法,解决散列表冲突的方法以及用代码实现散列表的查找和插入。原创 2018-03-06 20:27:29 · 663 阅读 · 0 评论 -
19. 图(1)
介绍了图的定义以及相关术语。原创 2018-02-12 16:58:40 · 2983 阅读 · 0 评论 -
7. 栈和队列(1)
主要介绍栈的相关知识,包括栈的顺序存储结构以及链式存储结构。进栈、出栈、计数、清空和销毁等多项操作。原创 2018-01-29 22:20:40 · 206 阅读 · 0 评论 -
10. 递归与分治思想
1. 递归1.1 什么是递归 所谓的递归就是在求解的过程中,函数在不停地自己调用自己解决问题。但是在实际的变成过程中能用迭代操作的就不要用递归进行操作(比如说 for 循环就是一种常见的递归方式),以为循环相当于知根知底,我们知道程序会在什么样的情况下停止,但是递归不能。所以有的时候我们也可以将本应该应用递归求解的过程转化为用迭代进行求解。 在高级语言中,函数自己调用和调用其他函数并没有本质的不原创 2018-01-31 14:42:13 · 640 阅读 · 0 评论 -
11. 字符串
1. 字符串1.1 字符串的定义 串(String)是由零个或多个字符组成的有限序列,又名叫字符串。一般记为 s =“a1a2a3……an”(n>=0)串可以是空串,即没有字符,直接由 ””表示(注意里边没有空格哦~),或者可以用希腊字母Φ来表示(读fai,四声)。子串与主串,例如“FishC”是“FishC.com”的子串,反之则倒过来。1.2 字符串的比较 字符串比较大小跟传统的数字比较有点原创 2018-01-31 23:29:43 · 294 阅读 · 0 评论 -
1. 数据结构与算法导论
本文是《小甲鱼数据结构》的学习笔记,对视频课程中的相关知识进行总结。 在这节主要介绍了关于数据结构与算法的一些概念性的内容原创 2018-01-25 14:44:54 · 1766 阅读 · 0 评论 -
12. 树(1)
树的定义,树的结点之间的关系,树的数据结构原创 2018-02-01 22:22:56 · 221 阅读 · 0 评论 -
13. 树(2)
二叉树的定义以及相关概念原创 2018-02-01 22:55:11 · 222 阅读 · 0 评论 -
14. 树(3)
介绍了二叉树的存储结构,主要是用一维数组存储和用链表存储。其中用链表存储的方式是现在通用的存储方式。原创 2018-02-02 09:55:38 · 153 阅读 · 0 评论 -
15. 树(4):二叉树的四种遍历方式(前序、后序,中序和层序)
二叉树的遍历,简单讲解四种遍历的过程,并编程实现前序,中序和后序三种情况。原创 2018-02-02 21:14:48 · 903 阅读 · 0 评论 -
2. 时间复杂度与空间复杂度
1. 算法效率的度量方法1.1 事后统计方法 这种方法主要是通过设计好的测试程序和数据,利用计算机计时器对不同算法编制的程序的运行时间进行比较,从而确定算法效率高低。 这种方法的缺陷在于:(1)必须依据算法实现编制好测试程序通常需要花费大量的时间和精力,但是如果发现测试的算法很糟糕的话就得不偿失。(2)不同的测试环境差别很大。1.2 事前分析估算法 在计算机编写程原创 2018-01-25 17:16:19 · 373 阅读 · 2 评论 -
16. 树(5)
线索二叉树原创 2018-02-03 14:43:13 · 135 阅读 · 0 评论 -
17. 树(6)
1. 树、森林及二叉树之间的相互转换原创 2018-02-03 15:25:34 · 227 阅读 · 0 评论 -
18. 树(7)
赫夫曼树原创 2018-02-03 21:53:26 · 177 阅读 · 0 评论 -
4. 线性表(2)
本文是《小甲鱼数据结构》的学习笔记,对视频课程中的相关知识进行总结。 本节主要介绍了静态链表的相关操作以及以单链表为背景的题目一道原创 2018-01-27 23:07:53 · 236 阅读 · 0 评论 -
3. 线性表(1)
本文是《小甲鱼数据结构》的学习笔记,对视频课程中的相关知识进行总结。 欢迎大家在评论区多多留言互动~~~~1. 线性表的定义 线性表是由零个或多个数据元素组成的有限 序列。 这里需要强调几个关键的地方 (1) 首先他是一个序列,就是元素之间有顺序; (2) 若元素存在多个,则第一个元素无前驱,最后一个元素无后继,其他的元素都只有一个前驱和后继;原创 2018-01-26 23:11:19 · 758 阅读 · 0 评论 -
8. 栈和队列(2)
1. 中缀表达式 (1-2)*(4+5)就是中缀表达式,加减符号在数字之间的表达式就是中缀表达式。人很习惯这样的表达式,但是计算机不喜欢了,因为我们有小括号中括号大括号,还允许一个嵌套一个,这样子计算机就要进行很多次if判断才行决定哪里先计算。2. 逆波兰表达式 后来,在20世纪三十年代,波兰逻辑学家Jan.Lukasiewicz不知道是像牛顿一样被苹果砸到脑袋而想到万有引力原原创 2018-01-30 10:38:47 · 208 阅读 · 0 评论 -
5. 线性表(3)
本文是《小甲鱼数据结构》的学习笔记,对视频课程中的相关知识进行总结。 循环链表及其在约瑟夫问题中的应用原创 2018-01-28 19:28:58 · 230 阅读 · 0 评论 -
6. 线性表(4)
双向链表 & 双向循环链表原创 2018-01-29 15:15:45 · 235 阅读 · 0 评论 -
26. 平衡二叉排序树
平衡二叉排序树的生成,查找和删除原创 2018-03-05 21:21:25 · 26600 阅读 · 1 评论