![](https://img-blog.csdnimg.cn/20201014180756928.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
数据结构与算法笔记(Python语言)
文章平均质量分 77
基于Python语言的数据结构与算法学习笔记
HadesZ~
HadesZ~的博客主页
展开
-
数据结构(Python版):二叉堆(Binary Heap)
二叉堆(Binary Heap)是一种节点数据项有序的完全二叉树结构。二叉堆中,子节点数据项必须小于(或大于)其父节点的数据项,这被称为:堆次序(Heap Order)。所以二叉堆中任何一条(从根节点到叶节点的)路径均是一个已排序数组,若堆数据项中的最小值位于根节点,则称为最小堆(min heap)或小根堆;若堆数据项中的最大值位于根节点,则称为最大堆(max heap)或大根堆。二叉堆(Binary Heap)定义的操作如下:BinaryHeap()方法,二叉堆初始化中采用一个列表来保存堆数据,其中表首下原创 2022-06-09 10:38:42 · 823 阅读 · 0 评论 -
数据结构(Python版):树(Tree)、二叉树(Binary Tree)
树(Tree)是有限个数据节点(即数据项)组成的集合,其中除根节点和叶的下标为外,每个节点都具有一个直接先驱节点和多个直接后继节点,这与每节点仅具有一个直接先驱节点和一个直接后继节点的线性结构不同;树结构中,根节点(Root)没有先驱节点,叶节点(Leaf)没有后续节点。如果树中的每个节点最多可以有两个后续节点,那么这样的树状结构称为二叉树,这是树状结构中最为常用的一种。二叉树(Binary Tree)定义的操作如下:代码实现:Python语言中,树结构可基于链表或嵌套列表实现。嵌套列表法的优点是:子树的原创 2022-06-09 10:25:59 · 1725 阅读 · 0 评论 -
常用算法:排序
排序算法是将 n 个给定元素按照大小顺序进行排列的算法。1. 对无序表的排序1.1 冒泡排序冒泡排序的算法思路在于多趟遍历比较无序表,每趟遍历依次对比相邻两数据项的大小,若逆序排序则交换数据项位置,使得每次遍历数据项中最大的一项都能移动到本次遍历长度的序列末尾,每次遍历结束后下次遍历的数据项序列长度减一,只到遍历序列长度小于等于1时结束计算(此时排序已完成)。冒泡排序的劣势在于:时间复杂度较高,为 O(n2)O(n^2)O(n2),这是因为每个数据项在找到其最终位置之前,必须要经过多次比对和交换原创 2022-05-12 20:14:20 · 961 阅读 · 0 评论 -
常用算法:查找
查找算法,是判断(检索)给定元素是否存在指定存储空间中的计算方法,指定存储空间可能采用不同数据结构来存储数据,根据待查数据结构的特点,也适用于不同类型的查找算法。查找算法中,数据结构一般可分为三类:线性结构(线性表)、散列表(哈希表)、非线性结构(树、堆、图)。其中,线性表适用于顺序查找算法和二分查找算法;散列表可以通过哈希函数,直接计算元素是否在散列表中,时间复杂度为O(n);树、堆、图等非线性结构普遍适用深度搜索或广度搜索算法。1. 线性数据结构的查找算法1.1 顺序查找从数据结构线形表的一端开原创 2022-05-14 17:23:08 · 182 阅读 · 0 评论 -
常用算法:问题求解与优化
0. 概述在面对问题求解或优化(求最优解)需求时,提出解决方案的核心思想是:分解问题规模,直到问题规模小到可以用非常简单、直接的方式来解决为止(此规模,称为问题的基本情况)。根据分解后得到的基本情况(种类)数量,及从整体(规模)问题到基本情况的演进规律,可分别采用分治、递归(可升级为动态规划,二者适用解决的问题情况相同)和贪心算法来求解问题,如下表所示:整体问题分解结果适用算法结果情况整体问题有多个独立的不同基本情况(子问题),且已知所有基本情况的并集就是整体问题本身分治全局原创 2022-05-10 12:04:22 · 974 阅读 · 0 评论 -
数据结构(Python版):线性表
2. 线性表(线性数据结构)线性结构是一种有序数据项的集合,其中每个数据项都有唯一的前驱和后继。除了第一个没有前驱,最后一个没有后继,新的数据项加入到数据集中时,只会加入到原有某个数据项之前或之后,具有这种性质的数据集,就称为线性结构。顺序表和链表是两种最基本的线性表(数据)结构。顺序表是指采用顺序存储的方式来存储数据元素的线性表,它通常在内存中开辟一段连续的存储空间,将结点依次存放在这组地址连续的存储空间中。因为存储空间连续且每个数据元素占用的空间相同,所以可计算得出每结点元素的存储地址,使元素索引原创 2022-05-14 20:51:29 · 1427 阅读 · 0 评论 -
数据结构(Python版):Python内置数据类型
1. Python内置数据类型python内置数据类型中的列表list和字典dict,可作为Python语言中实现各种常用数据结构的基石,后续各种数据结构均基于他们实现。两种数据类型的常见(操作)方法均可归纳为增删改查四大类,如图1所示:图1: list和dict的主要操作列表数据类型的数据追加方法有两种实现方法:append() 和 两列表相加(即:add()“+”),其中 lst.append(v) 的时间复杂度是O(1),lst= lst+ [v] 的时间复杂度是O(n+k),其中k是被加的列表原创 2022-05-10 11:18:56 · 681 阅读 · 0 评论