
数据结构笔记
文章平均质量分 88
BBJG_001
手与大脑的距离决定了理想与现实的相似度
展开
-
并查集原理并Python实现、Java实现
原文地址 分类目录——数据结构笔记 喔哈哈,刷题刷到了并查集,我就把我一年级时候的课程设计拿了出来,就直接贴上了 那回事儿是用Java写的,Python实现在文尾 Python实现 这里写了一份简单版的,通过字典实现父子关系relation = {son:father} # 构造{节点:祖先}关系,使每个节点的父亲都指向最顶层祖先 def union_find(nodes, edges): father = {} # 字典记录父节点 {node: father_node} for n原创 2020-07-17 21:01:16 · 319 阅读 · 0 评论 -
数据结构笔记:二分查找
原文地址 分类目录——数据结构笔记 只能作用于有序的顺序表上 又折半查找 对比序列的中间值,小于该值从左序列中二分查找,大于该值从右序列中二分查找,直到查找到目标值或子序列只有一个元素截止 实现 递归实现 def binarysearch(alist, item): '''二分查找_递归实现''' n = len(alist) if n > 0: ...原创 2020-03-17 09:51:45 · 1863 阅读 · 0 评论 -
数据结构笔记:归并排序
原文地址 分类目录——数据结构笔记 先把整个序列对半拆分,然后对子序列在进行对半拆分,直直拆成每个子序列只有一个元素, 然后再按拆分顺序一层一层反向合并,在拆分过程中原来在一个子序列的,合并后还在子序列,合并时需要保证按序合并 最底层的合并好说,两个值,比较大小,小值在前 再往上,需要为合并的两个子序列配置两个指针(姑且称之为left和right),初始分别指向序列的起始位置,较两个指针指向值,取...原创 2020-03-16 10:55:59 · 1726 阅读 · 0 评论 -
数据结构笔记:快速排序
原文地址 分类目录——数据结构笔记 建议必须要掌握的,用的比较多。 理解1 每次取出第1个元素,剩余元素算作一个序列,使用两个指针分置两端,姑且吧左端称之为小指针,把右端称之为大指针,作用就是为了给第1个元素找的合适的位置。比较小指针指向值与第1个元素,如果比第1元素小说明符合要求,继续后移去判断下一个,如果不满足要求,即小指针的值比第1元素大了,停住小指针,去最右端看大指针,如果大指针指...原创 2020-03-15 09:31:47 · 1713 阅读 · 1 评论 -
数据结构笔记:希尔排序
原文地址 分类目录——数据结构笔记 理论 每隔一个gap取一个值构成一个子序列(也就是其中的一行,比如54,77,20),这是一个逻辑上的子序列,并不会把它拿出来,在按照插入排序进行改动时,是对原序列进行操作 每个子序列内进行插入排序 排序完一轮后将gap减半,再次进行按gap分子序列插入排序 gap选取是一个值的研究的地方 实现 在描述原理时把整个序列分成若干子序列,每个子序列进行插入...原创 2020-03-14 09:29:17 · 1935 阅读 · 0 评论 -
数据结构笔记:插入排序
原文地址 分类目录——数据结构笔记 前一部分有序序列,有一部分无序序列 与选择排序的不同是 选择排序是从无序序列中选一个最小值 插入排序是拿无需部分的第一个往有序部分插入,插入到合适位置 实现 def insertsort(alist): n = len(alist) for i in range(1, n): for j in range(i, 0, -1...原创 2020-03-12 09:50:36 · 1832 阅读 · 1 评论 -
数据结构笔记:选择排序
原文地址添加链接描述 分类目录——数据结构笔记 每一步在未排序部分去比较当前标记的最小值(初始化为第1个)与当前值的大小,更新(或不跟新)最小值的索引,维护的是一个最小值的索引 每一轮找一个最小值,替换未排序部分最开始的值与标记的最小值 插入排序也是将序列分为前后两个部分,前面有序部分,后面无序部分 实现 def selectsort(alist): n = len(alist) ...原创 2020-03-11 10:19:46 · 1755 阅读 · 0 评论 -
数据结构笔记:冒泡排序
原文地址 分类目录——数据结构笔记 排序算法的稳定性 假设序列中有两个相同的值,不过排序完成之后这两个相同值的相对位置保持不变,就是这个排序算法时稳定的;反之,则排序算法不稳定 在实际中要求稳定性的场景也不多 原理 以升序为例 每一步两个一比,更大值后移;每一轮把最大值移动到最后;大的就像一个泡,一步一步冒到后面 实现 def bubbltsort(alist): n = l...原创 2020-03-10 09:52:25 · 1853 阅读 · 1 评论 -
数据结构笔记:二叉树
原文地址 分类目录——数据结构笔记 二叉树:每个节点最多含有两个子树的树称为二叉树 二叉树的性质 在二叉树的第i层上至多有2^(i-1)个结点(i>0) 深度为k的二叉树至多有2^k-1个结点(k>0) 对于任意一棵二叉树,如果其叶结点为N0,而度数为2的结点总数为N2,则N0=N2+1 具有n个结点的完全二叉树的深度必为 log2(n+1) 对完全二叉树,若从上至下、从左只右编...原创 2020-03-09 08:15:01 · 1831 阅读 · 0 评论 -
数据结构笔记:树
原文地址 分类目录——数据结构笔记 概念 树是一种抽象数据结构(ADT)或是实现这种抽象数据类型的数据结构,用来模拟具有树状结构性质的数据集合。它是由n(n>=1)个有限节点组成一个具有层次关系的集合。把它叫做树是因为它看起来像一棵倒挂的树,也就是说它是根朝上,而叶朝下的。它具有以下特点 每个节点有0个或多个子节点; 没有父节点的节点成为根阶段; 每一个非根节点有且只有一个父...原创 2020-03-08 10:14:53 · 2124 阅读 · 0 评论 -
数据结构笔记:双端队列
原文地址 分类目录——数据结构笔记 双端队列(deque,double-ended queue),是一种具有队列和栈的性质的数据结构。 双端队列中每一端,都可以进行存入和取出,去其中一段,都像一个栈一样。 存取也只限定在两端,不能在中间 双端队列的实现 通过线性表实现 class Dequeue(object): def __init__(self): '''初始化一个...原创 2020-03-07 10:09:05 · 1868 阅读 · 0 评论 -
数据结构笔记:单线队列
原文地址 分类目录——数据结构笔记 队列 两端开口的数据结构 队列有单向队列(我姑且这么称之)和双端队列 单项队列 只能一端只能存入,一端只能取出,先进先出 可以通过线性表(顺序表或链表)实现 单向队列的实现 class Queue(object): def __init__(self): '''初始化一个空队列''' self.__list =...原创 2020-03-06 09:04:46 · 1856 阅读 · 0 评论 -
数据结构笔记:栈
原文地址[ 分类目录——数据结构笔记](https://blog.youkuaiyun.com/bbjg_001/category_9753496.html) 栈(stack),有些地方也成为堆栈,是一种容器,可存储元素、访问元素、删除元素,他的特点是值能允许在容器的一段(称之为 栈顶 top)进行数据的追加(push)和数据读出(pop)。没有了位置/索引的概念,保证任何时候可以访问、删除的元素都是在此前左...原创 2020-03-05 09:16:40 · 1907 阅读 · 0 评论 -
数据结构笔记:单向循环链表
原文地址 分类目录——数据结构笔记 普通单链表的结尾元素的next=None,循环链表就是将结尾元素的next=head 节点实现(同单链表) class Node(object): def __init__(self, value): self.value = value self.next = None 单向循环列表实现及常用方法 比之单项非循...原创 2020-03-05 09:13:38 · 1919 阅读 · 0 评论 -
数据结构笔记:双向链表
原文地址 分类目录——数据结构笔记 单向链表,只能从前往后递进,单个节点只有后继节点,没有前驱节点 双向链表,是一种既有后继节点,又有前驱节点的链表结构 节点实现 class Node(object): def __init__(self, value): self.value = value self.next = None self....原创 2020-03-02 11:05:31 · 1954 阅读 · 0 评论 -
数据结构笔记:单向链表
原文地址 分类目录——数据结构笔记 离散存储,手拉手,每一块有指向下一块的指针(形象描述,python中没有指针),就好像形成了一条链 一个元素包括两部分:value 和 next 链表与顺序表都是线性表 知识点补充 b = 20 a = 'achar' a = b # 在python中,所有的变量保存的都是值的地址(就相当于c语言中的指针) # 等号右边表示执行,=b中的b就是执...原创 2020-02-29 10:02:44 · 1982 阅读 · 0 评论 -
数据结构笔记——顺序表
原文地址 python中的list就是顺序表的结构 一体式结构 等量大小的数据,可以只指定一个首地址和总长度即可(还有一个默认单位存储地址),取值则可以通过这上述参数计算而得。 list1 = [1, 2020, 2008] 元素外置 地址,用一个顺序表存地址(地址码是等大的) list2 = [‘张三’, 2, True] 内存以一个字节为索引单位 python中已经对顺序表进...原创 2020-02-27 12:10:01 · 2085 阅读 · 0 评论