
数据结构
枫城雪
这个作者很懒,什么都没留下…
展开
-
24.数据结构——二叉树的遍历(笔记)
二叉树的遍历 树的遍历是树的一种重要的运算。所谓遍历是指对树中所有结点的信息的访问,即依次对树中每个结点访问一次且仅访问一次,我们把这种对所有节点的访问称为遍历(traversal)。那么树的两种重要的遍历模式是深度优先遍历和广度优先遍历,深度优先一般用递归,广度优先一般用队列。一般情况下能用递归实现的算法大部分也能用堆栈来实现。深度优先遍历 &nbs原创 2020-05-31 21:31:20 · 299 阅读 · 0 评论 -
23.数据结构——二叉树添加节点和广度优先遍历的实现(笔记)
二叉树的节点表示以及树的创建 通过使用Node类中定义三个属性,分别为item本身的值,还有lchild左孩子和rchild右孩子class Node(object): """节点类""" def __init__(self,item): self.item = item self.lchild = None self.rchild = None树的创建,转载 2020-05-30 17:35:58 · 254 阅读 · 0 评论 -
22.数据结构——二叉树概念及性质(笔记)
二叉树的基本概念 二叉树是每个节点最多有两个子树的树结构。通常子树被称作“左子树”(left subtree)和“右子树”(right subtree)二叉树的性质(特性)性质1: 在二叉树的第i层上至多有2^(i-1)个结点(i>0)性质2: 深度为k的二叉树至多有2^k - 1个结点(k>0)性质3: 对于任意一棵二叉树,如果其叶结点数为N0,而度数为2的结点总数为N2,则N0=N2+1;性质4:具原创 2020-05-30 16:23:25 · 266 阅读 · 0 评论 -
21.数据结构——树的认识及概念(笔记)
树的概念 树(英语:tree)是一种抽象数据类型(ADT)或是实作这种抽象数据类型的数据结构,用来模拟具有树状结构性质的数据集合。它是由n(n>=1)个有限节点组成一个具有层次关系的集合。把它叫做“树”是因为它看起来像一棵倒挂的树,也就是说它是根朝上,而叶朝下的。它具有以下的特点:每个节点有零个或多个子节点;没有父节点的节点称为根节点;每一个非根节点有且只有一个父节点;除了根节点外,每个子节点可以分为多个不相原创 2020-05-30 15:16:08 · 246 阅读 · 0 评论 -
20.数据结构——二分法查找(笔记)
什么是搜索算法 搜索是在一个项目集合中找到一个特定项目的算法过程。搜索通常的答案是真的或假的,因为该项目是否存在。 搜索的几种常见方法:顺序查找、二分法查找、二叉树查找、哈希查找。二分法查找 二分查找又称折半查找,优点是比较次数少,查找速度快,平均性能好;其缺点是要求待查表为有序表,且插入删除困难。因此,折半查找方法适用于不经常变动而查找频原创 2020-05-30 10:02:34 · 1127 阅读 · 0 评论 -
18.数据结构——快速排序(笔记)
快速排序 快速排序(英语:Quicksort),又称划分交换排序(partition-exchange sort),通过一趟排序将要排序的数据分割成独立的两部分,其中一部分的所有数据都比另外一部分的所有数据都要小,然后再按此方法对这两部分数据分别进行快速排序,整个排序过程可以递归进行,以此达到整个数据变成有序序列。...原创 2020-05-29 21:30:14 · 297 阅读 · 0 评论 -
19.数据结构——归并排序(笔记)
归并排序 归并排序是采用分治法的一个非常典型的应用。归并排序的思想就是先递归分解数组,再合并数组。 将数组分解最小之后,然后合并两个有序数组,基本思路是比较两个数组的最前面的数,谁小就先取谁,取了后相应的指针就往后移一位。然后再比较,直至一个数组为空,最后把另一个数组的剩余部分复制过来即可。 &原创 2020-05-29 16:09:08 · 175 阅读 · 0 评论 -
17.数据结构——希尔排序(笔记)
希尔排序 希尔排序(Shell Sort)是插入排序的一种。也称缩小增量排序,是直接插入排序算法的一种更高效的改进版本。希尔排序是非稳定排序算法。该方法因DL.Shell于1959年提出而得名。 希尔排序是把记录按下标的一定增量分组,对每组使用直接插入排序算法排序;随着增量逐渐减少,每组包含的关键词越来越多,当增量减至1时,整个文件恰被分成一组,算法便终止。希尔排序过程 &n原创 2020-05-26 22:10:11 · 222 阅读 · 0 评论 -
15.数据结构——选择排序(笔记)
选择排序 选择排序(Selection sort)是一种简单直观的排序算法。它的工作原理如下。首先在未排序序列中找到最小(大)元素,存放到排序序列的起始位置,然后,再从剩余未排序元素中继续寻找最小(大)元素,然后放到已排序序列的末尾。以此类推,直到所有元素均排序完毕。 选择排序的主要优点与数据移动有关。如果某个元素位于正确的最终位置上,则它不原创 2020-05-26 10:23:22 · 403 阅读 · 0 评论 -
16.数据结构——插入排序(笔记)
插入排序 插入排序(英语:Insertion Sort)是一种简单直观的排序算法。它的工作原理是通过构建有序序列,对于未排序数据,在已排序序列中从后向前扫描,找到相应位置并插入。插入排序在实现上,在从后向前扫描过程中,需要反复把已排序元素逐步向后挪位,为最新元素提供插入空间。 相对于选择排序,插入排序不会遍历整个未排序的部分,只是从里面拿出一原创 2020-05-22 11:42:08 · 328 阅读 · 0 评论 -
14.数据结构——冒泡排序(笔记)
冒泡排序 冒泡排序(英语:Bubble Sort)是一种简单的排序算法。它重复地遍历要排序的数列,一次比较两个元素,如果他们的顺序错误就把他们交换过来。遍历数列的工作是重复地进行直到没有再需要交换,也就是说该数列已经排序完成。这个算法的名字由来是因为越小的元素会经由交换慢慢“浮”到数列的顶端。冒泡排序算法的运作如下:比较相邻的元素。如果第一个比第二个大(升序),就交换他们两个。对每一对相邻元素作同样的工作,从开始第一原创 2020-05-22 09:42:42 · 299 阅读 · 0 评论 -
13.数据结构——排序算法的稳定性(笔记)
排序算法(英语:Sorting algorithm)是一种能将一串数据依照特定顺序进行排列的一种算法。排序算法的稳定性 稳定性:稳定排序算法会让原本有相等键值的纪录维持相对次序。也就是如果一个排序算法是稳定的,当有两个相等键值的纪录R和S,且在原本的列表中R出现在S之前,在排序过的列表中R也将会是在S之前。 &nbs原创 2020-05-22 08:37:03 · 271 阅读 · 0 评论 -
12.数据结构——队列(笔记)
队列原创 2020-05-21 21:42:16 · 169 阅读 · 0 评论 -
11.数据结构——栈(笔记)
栈 栈是线性表的进一步封装,栈可以用顺序表实现,也可以用链表实现。(这里主要是用顺序表或者是链表来存储数据元素)栈的实现 实现以下操作。代码:class Stack(object): """栈""" def __init__(self): self.__items = [] #使用列表实现栈原创 2020-05-21 15:45:28 · 126 阅读 · 0 评论 -
10.数据结构——单向循环链表的实现(笔记)
单向循环链表 单链表的一个变形是单向循环链表,链表中最后一个节点的next域不再为None,而是指向链表的头节点。实现以下操作:代码:class Node(object): """节点""" def __init__(self, item): self.item = item self.next = Noneclass SinCycLinkedlist(obje原创 2020-05-21 10:42:37 · 491 阅读 · 0 评论 -
9.数据结构——双向链表的实现(笔记)
双向链表 一种更复杂的链表是“双向链表”或“双面链表”。每个节点有两个链接:一个指向前一个节点,当此节点为第一个节点时,指向空值;而另一个指向下一个节点,当此节点为最后一个节点时,指向空值。下面实行双向链表如下操作:代码class Node(object): """双向链表节点""" def __init__(self, item): self.item = item原创 2020-05-15 10:48:58 · 263 阅读 · 0 评论 -
8.数据结构——单链表的实现(笔记)
单链表的节点实现 class SingleNode(object): """单链表的结点""" def __init__(self,item): # item存放数据元素 self.item = item # next是下一个节点的标识 self.next = None数据结构是通过面向对象实现的。因为链表都是有一个个节点实现,所以首先要用原创 2020-05-11 20:25:00 · 305 阅读 · 0 评论 -
7.数据结构——链表(笔记)
链表 为什么需要链表: 顺序表的构建需要预先知道数据大小来申请连续的存储空间,而在进行扩充时又需要进行数据的搬迁,所以使用起来并不是很灵活。链表结构可以充分利用计算机内存空间,实现灵活的内存动态管理。 &nb...原创 2020-03-03 16:15:58 · 203 阅读 · 0 评论 -
6.数据结构——Python中的顺序表(笔记)
Python中的顺序表Python中的list和tuple两种类型采用了顺序表的实现技术,具有前面讨论的顺序表的所有性质。tuple是不可变类型,即不变的顺序表,因此不支持改变其内部状态的任何操作,而其他方面,则与list的性质类似。list的基本实现技术 Python标准类型list就是一种元素个数可变的线...原创 2020-02-25 11:12:04 · 243 阅读 · 0 评论 -
5.数据结构——顺序表(笔记)
顺序表的基本形式原创 2020-02-24 20:10:52 · 673 阅读 · 0 评论 -
4.数据结构——数据结构与算法的区别(笔记)
数据结构可以联想Python内置的数据结构,列表、字典、元组。原创 2020-02-21 21:11:03 · 193 阅读 · 0 评论 -
3.数据结构——Python内置类型性能分析(笔记)
Python内置类型性能分析 首先,介绍一个模块,timeit模块。他是可以用来测试一小段Python代码的执行速度。 第一个参数是stmt,比如:当要测试一个函数是,stmt就是,调用这个函数的语句。 &...原创 2020-02-21 21:00:37 · 206 阅读 · 0 评论 -
2.数据结构——算法分析(笔记)
算法分析 第一种方法的代码:for a in range(0, 1001): for b in range(0, 1001): for c in range(0, 1001): if a**2 + b**2 == c**2 and a+b+c == 1000: ...原创 2020-02-21 16:16:30 · 216 阅读 · 0 评论 -
1.数据结构——引入概念(笔记)
引入先看一道题: 如果 a+b+c=1000,且 a^2 +b^2= c^2(a,b,c 为自然数),如何求出所有a、b、c可能的组合? 第一种方法:穷举法。  ...原创 2020-02-21 15:48:26 · 208 阅读 · 0 评论