![](https://img-blog.csdnimg.cn/20201014180756913.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
数据结构与算法
文章平均质量分 56
争做知识分子!!!!!
这个作者很懒,什么都没留下…
展开
-
数据结构------树(未更新完...)
树1.树的定义树是一种数据结构,比如目录结构树是一种可以递归定义的数据结构树由n各节点组成的集合:(1)如果n=0,那么这是一棵空树;(2)如果n>0,那存在1个节点作为树的根节点,其他节点可以分为m个集合,每个集合本身又是一棵树.2.一些树的术语(1)节点(2)根节点:没有入边的节点(3)父节点(4)子节点(5)兄弟节点(6)子树(7)叶子节点:没有子节点的节点(8)树的高度(深度)(9)树的度实现文件系统:class Node: def __init__(s原创 2022-03-17 23:29:07 · 235 阅读 · 0 评论 -
数据结构------哈希表
哈希表哈希表(Hash Table,又称散列表),是一种线性表的存储结构.哈希表有一个直接寻址地址和一个哈希函数组成.哈希函数h(k)将元素关键字k作为自变量,返回元素的存储下标过程直接寻址表当关键字的全域U比较小时,直接寻址是一种简单而有效的方法缺点:当域U很大时,需要消耗大量的内存,很不实际,如果U很大而实际出现的key很少,则大量的空间被浪费.无法处理关键字不是数字的情况.改进直接寻址法—哈希(1)构建大小为m的寻指标T;(2)key为k的元素放在h(k)位置上;(3)h(k)原创 2022-03-17 16:18:17 · 424 阅读 · 0 评论 -
数据结构------链表
链表链表是由一系列节点组成的元素集合.每个节点包含两部分,数据域item和指向下一个节点的指针next.通过节点之间的相互连接,最终串联成一个链表.# 节点的实现class Node(): def __init__(self, item): self.item = item self.next = None链表的创建和遍历class Node(): def __init__(self, item): self.item = it原创 2022-03-17 11:16:16 · 408 阅读 · 0 评论 -
数据结构------队列
队列队列(Queue)是有序集合,仅允许在队尾插入,在队头进行删除.性质队列FIFO先进先出的原则进行操作队列的实现队列的实现能不能用简单的列表来实现呢?如下:…队列的实现方式----环状队列:空队的时候如下:rear和front共同指向0的位置当有元素入队时:当元素a1,a2出队,同时a9,a10入队后,front和rear的位置如图所示:此时队满(1)队首指针前进1:front = (front+1)%MaxSize(2)队尾指针前进1: = (rear+1)%MaxS原创 2022-03-17 00:26:26 · 766 阅读 · 0 评论 -
数据结构------栈
栈栈(Stack)是一个数据集合,可以理解为只能在一段进行插入或删除的列表.特点LIFO(last_in, first_out),栈中的数据后进先出栈的相关概念栈顶,栈底栈的基本操作(1)进栈:push(2)出栈:pop(3)取栈顶元素:peek()(4)检查栈是否为空:isEmpty()(5)检查栈的大小:size()栈的实现栈可以使用列表来实现,以下我代码,(也可直接使用列表当栈)class Stack(): def __init__(self):原创 2022-03-16 21:48:12 · 641 阅读 · 0 评论 -
冒泡排序,选择排序,插入排序
冒泡排序每一趟找出一个剩余元素中最大的元素def bubble_sort(li): # 一共len(li)-1趟 for i in range(len(li)-1): # 每一趟比较的次数都不相同 exchange = False for j in range(len(li)-i-1): if li[j] > li[j+1]: li[j], li[j+1] = li[j+1],原创 2022-03-10 19:58:16 · 50 阅读 · 0 评论 -
速度较快-------归并排序
何为归并?归并排序的思想是归并.归并是使将两个分别有序的列表合并成一个有序的列表.如下:如图,两个列表分别有序,将他们合并成一个有序的大列表.一下我们实现归并的过程.我们可以通过中间位置将一个列表分为两个有序的列表:lst1 = [0, 3, 4] 和 lst2 = [2, 5, 7,8](1)比较i和j位置的元素,将i位置较小的元素0放入新的列表中,并将i向后移动;(2)比较此时i和j位置的元素,将j较小位置的元素2追加至新的列表,并且j向后移动;…(n)此时左边列表的元素已经遍历完原创 2022-03-10 18:43:29 · 124 阅读 · 0 评论 -
速度较快-------快速排序
快速排序原创 2022-03-10 15:55:10 · 112 阅读 · 0 评论 -
速度较快-------堆排序方法
堆排序在了解堆之前需要补充一些关于树的知识:堆是比较特殊的完全二叉树,分为两种:大根堆和小根堆.大根堆:每个父节点都大于子节点;小根堆:每个父节点的值都小于叶子节点的值.什么是堆的向下调整?向下调整的树的特征是:树本身不是堆,但是其左右子树是堆.如下图所示:根节点处是0的左子树和右子树都是大根堆.接下来我们看一下堆的向下调整.向下调整就是把0向下调整到下面合适的位置.(1)将顶部根节点的元素拿出来,和其两个子节点进行比较,挑出其中的较大的7,将其上移,此时7的位置空出来;(2)此时将原创 2022-03-09 00:40:58 · 309 阅读 · 0 评论