Python数据结构
菜丁儿
(ง •_•)ง
展开
-
13_python_graph
文章目录图的概念ADT Graph的实现图搜索算法广度优先搜索BFS深度优先搜索DFS骑士周游专用算法通用DFS图的应用词梯问题骑士周游问题初始算法Warnsdorff算法拓扑排序强连通分支最短路径问题最小生成树图的概念图可以用G=(V,E)来表述,对于图G,V是顶点的集合,E是边的集合。每个边是一个元组(v,w),v和w属于顶点集合V。路径:由边依次连接起来的顶点序列。将路径定义为P=(...原创 2020-02-22 19:56:48 · 963 阅读 · 1 评论 -
12_python_tree
文章目录树的Python实现树的嵌套列表实现树的链表实现树的应用:表达式解析树的遍历二叉堆的Python实现代码实现堆排序二叉搜索树的Python实现定义及操作代码实现算法分析AVL树的Python实现平衡解析代码实现总结树的Python实现树的嵌套列表实现用Python List来实现二叉树数据结构。递归的嵌套列表实现二叉树,由具有3个元素的列表实现:[root, left, righ...原创 2020-02-20 11:40:19 · 672 阅读 · 0 评论 -
11_python_Merge Sort and Quick Sort
文章目录归并排序普通版代码Pythonic版代码时间复杂度分析快速排序代码时间复杂度分析排序算法总结归并排序归并排序:分治策略在排序中的应用归并排序是递归算法,思路是将数据表持续分裂为两半,对两半分别进行归并排序基本结束条件:数据表仅有1个数据项,自然是排好序的缩小规模:将数据表分裂为相等的两半,规模减为原来的二分之一调用自身:将两半分别调用自身排序,然后将分别排好序的两半进行归并...原创 2020-02-17 20:38:39 · 164 阅读 · 0 评论 -
10_python_Insertion Sort and Shell Sort
文章目录插入排序希尔排序插入排序插入排序的时间复杂度为O(n^2)插入排序维持一个已排好序的子列表,其位置始终在列表的前部,然后逐步扩大这个子列表直到全表。(类似于打牌时整理扑克牌)第1趟,子列表仅包含第1个数据项,将第2个数据项作为‘新项’插入到子列表的合适位置中,这样已排序的子列表就包含了2个数据项第2趟,再继续将第3个数据项跟前2个数据项比对,并移动比自身大的数据项,空出位置来...原创 2020-02-17 20:29:26 · 82 阅读 · 0 评论 -
09_python_Bubble Sort and Selection Sort
文章目录冒泡排序代码时间复杂度分析改进选择排序冒泡排序冒泡排序的算法思路在于对无序表进行多趟比较交换每趟包括了多次两两相邻比较,并将逆序的数据项交换位置,最终将本趟的最大项就位经过n-1趟比较交换,实现整表排序第n-1趟完成后,最小项一定在列表首位,无需再处理。第s趟比较交换时,需要排序的数据减少为n-s+1,共有n-s对相邻数据进行比较。代码def bubbleSort...原创 2020-02-17 20:20:22 · 179 阅读 · 0 评论 -
08_python_Hash Table
文章目录概念散列完美散列函数函数库hashlib完美散列函数用途最酷应用:区块链技术散列函数设计冲突解决方案映射抽象数据类型及Python实现python实现散列算法分析查找总结概念散列散列散列表是一种数据的集合,其中的每个数据都通过某种特定的方式进行存储以方便日后的查找散列表的每一个位置叫做槽,能够存放一个数据项,并以从0开始递增的整数命名。初始条件下,散列表中是没有任何数据的,...原创 2020-02-16 20:22:05 · 272 阅读 · 0 评论 -
07_python_Binary Search
文章目录二分查找普通版算法递归版算法二分查找复杂度分析二分查找利用有序表的特性,迅速缩小待比对数据项的范围从列表中间的项开始比对如果列表中间的项匹配成功,则查找结束如果不匹配,那么有两种情况:列表中间的项比查找项大,那么查找项只能出现在前半部分列表中间的项比查找项小,那么查找项只能出现在后半部分无论如何,将对比范围缩小到原来的一半:n/2继续采用上面的方法查找,每次...原创 2020-02-14 16:48:14 · 162 阅读 · 0 评论 -
06_python_Sequential Search
文章目录顺序查找算法无序表顺序查找代码复杂度分析有序表顺序查找代码复杂度分析顺序查找算法通过下标,可以按照顺序来访问和查找数据项,这种技术称为“顺序查找”如果数据项保存在如列表这样的集合中,我们会称这些数据项具有线性或者顺序关系在Python List中,这些数据项的存储位置称为下标(index),这些下标都是有序的整数要确定列表中是否存在需要查找的数据项首先从列表的第...原创 2020-02-14 16:45:07 · 205 阅读 · 0 评论 -
05_python_recursive
文章目录递归简介整数转换为任意进制递归图示turtle module分形树谢尔宾斯基Sierpinski三角形递归应用汉诺塔探索迷宫动态规划分治策略优化问题和贪心策略找零兑换的递归算法找零兑换的动态规划算法动态规划案例分析--博物馆大盗动态规划算法递归算法递归简介给定一个列,返回所有数的和全括号表达式数列的和 = 首个数 + 余下数列的和def listsum(numlist)...原创 2020-02-14 11:28:23 · 1136 阅读 · 1 评论 -
04_python_List
文章目录用链表实现无序表用链表实现有序表链表实现的算法分析用链表实现无序表链表实现:节点Node每个节点至少要包含2个信息:数据项本身,以及指向下一个节点的引用信息。next为None的意义是指没有下一个节点了class Node: def __init__(self, initdata): self.data = initdata se...原创 2020-02-13 19:41:57 · 110 阅读 · 0 评论 -
03_python_deque
文章目录用python实现双端队列回文词判定用python实现双端队列采用List实现List下标0作为双端队列的尾端;List下标-1作为双端队列的首端addFront()/removeFront()函数操作复杂度为:O(1)addRear()/removeRear()函数操作复杂度为:O(n)class Deque: def __init__(self): ...原创 2020-02-13 19:38:14 · 100 阅读 · 0 评论 -
02_python_queue
文章目录用Python实现队列热土豆打印任务用Python实现队列将LIst首端作为队列的尾端,List末端作为队列的首端。enqueue():复杂度为O(n)dequeu():复杂度为O(1)class Queue: def __init__(self): self.items = [] def isEmpty(self): r...原创 2020-02-13 19:36:30 · 139 阅读 · 0 评论 -
01_python_stack
在刷题的过程中,发现在应用Python编程时,相关数据结构的基础知识有些遗忘,正好在B站看到了北大陈斌老师的数据结构网课,趁着在家巩固一下基础知识。文章目录用Python实现栈简单括号匹配简单小括号匹配通用括号匹配十进制转化十进制转化为二进制十进制转化为十六以下任意进制N表达式通用的中缀转后缀算法后缀表达式求值用Python实现栈用Python的面向对象机制,可以用来实现用户自定义类型。...原创 2020-02-13 19:33:25 · 169 阅读 · 0 评论