![](https://img-blog.csdnimg.cn/20190918135101160.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
基于《算法图解》与《数据结构与算法(python语言实现)》
文章平均质量分 86
数据结构
右边是我女神
笔记仓库
展开
-
数据结构(常用&C++函数)(持续更新...)
文章目录数组链表链表相比于数组的优势数组链表链表相比于数组的优势数组在内存中的排列必须是连续的,在分配内存时通常是固定的,这会造成两个问题。首先,没有用到但已经分配的内存是浪费的;其次,达到内存上限时会重新申请内存,转移数据还需要花费一定的时间。然而,链表就没有这个问题,可以随意地存储在内存中。数组的插入以及删除操作的时间复杂度通常是较高的(数组的优势在于可以随机访问而链表只支持顺序访问)。...原创 2022-01-23 19:56:36 · 603 阅读 · 0 评论 -
排序算法(持续更新...)
文章目录选择排序选择排序原创 2022-01-23 11:15:39 · 295 阅读 · 0 评论 -
查找算法(持续更新...)
文章目录二分查找思路代码注意二分查找思路明确上下界;每次查找检查上下界的中间位置;如果没找到,比较大了还是小了,移动上界/下界,返回步骤2;如果找到了则退出;如果始终找不到则退出。代码代码思路描述:找到1~100以内的素数;用二分查找检查32是否在这些素数里面。#include <iostream>#include <vector>using std::vector;int binary_search(vector<int> arr,原创 2022-01-23 10:52:44 · 513 阅读 · 0 评论 -
数据结构-排序算法
文章目录回顾归并排序分治法基于数组的归并排序的实现快速排序随机快速排序线性排序算法桶排序稳定排序基数排序算法排序的比较考虑运行时间插入排序堆排序快速排序归并排序桶排序和基数排序我们已经学过的排序有:插入排序;选择排序;冒泡排序;堆排序;在本章节将会介绍四种其他的排序:归并排序;快速排序;桶排序;基数排序。回顾def insertion_sort(A): # 降序 for i in range(1,len(A)): cur = A[i]原创 2021-06-24 21:07:10 · 141 阅读 · 1 评论 -
数据结构-搜索树
二叉搜索树能够有效地实现有序映射。二叉搜索树是每个节点p存储一个键值对(k,v)的二叉树,使得:1.存储在p的左子树的键都小于k;2.存储在p的右子树的键都大于k。遍历二叉搜索树二叉搜索树中关于键的位置的结构特性使得树的遍历是中序遍历。命题:二叉搜索树的中序遍历是按照键增加的顺序进行的。除了树本身提供的方法,二叉搜索树还支持一下方法:操作作用first()返回一个包含最小键的节点,若树为空,则返回Nonelast()返回一个包含最大键的节点,若树为空,则返回N原创 2021-06-23 17:24:14 · 541 阅读 · 1 评论 -
伪代码的书写规范
文章目录基本组成部分变量的声明表达式赋值语句指令的表示注释函数特殊结构分支语句循环语句基本组成部分变量的声明定义变量的语句不用写出来,但是需要在注释中写明白;表达式表达式正常写。赋值语句把b赋值给a:a<− ba <-~ ba<− b交换a、b的值:a<−>ba<->ba<−>b指令的表示对于一些子任务,可以一句话带过,避免与主题无关的细节扰乱了代码整体;比如:“假设x是列表A中最小的项”、“从列表A中删除x”。原创 2021-06-19 21:18:16 · 6617 阅读 · 2 评论 -
数据结构-算法分析
文章目录实验研究进一步实验分析计算原子操作最坏情况输入的研究7种常用函数常数函数对数函数线性函数nlogn函数二次函数三次函数和其他多项式指数函数比较增长率渐进分析大O符号(上限)大Ω\OmegaΩ符号(下限)大Θ\ThetaΘ符号比较分析算法分析示例常量时间操作找最大值算法前缀平均数二次时间算法线性时间算法三集不相交原始方案改进方案元素唯一性原始方案改进方案证明技术用时间来度量一个算法的优劣。实验研究如果算法已经实现,在不同的输入下,执行算法并记录每一次执行所花费的时间。我们可以利用time模块原创 2021-06-17 00:29:27 · 350 阅读 · 2 评论 -
数据结构-面向对象编程
文章目录目标、原则和模式面向对象的设计目标面向对象的设计原则面向对象的设计模式编码风格建议抽象基类深拷贝和浅拷贝目标、原则和模式面向对象模式中的主体被称为对象。每个对象都是类的实例。类的定义规定了对象包括的实例变量(数据成员)和方法(成员函数)。面向对象的设计目标健壮性希望软件能处理在应用中没有明确定义的异常输入。感觉像是身体能抵御病毒。适应性易于不断进行优化。可重用性同样的代码可以用在不同系统的各种应用中。面向对象的设计原则模块化指的是一种组织原则。抽象化指的是从一个原创 2021-06-16 22:10:33 · 556 阅读 · 0 评论 -
数据结构-映射、哈希表和跳跃表
映射和字典抽象数据类型:计算机科学中具有类似行为的特定类别的数据结构的数学模型。字典是一种映射(关联数组)。字典是python中的数据结构。映射的抽象数据类型键值对以元组的形式存储。映射最重要的五类行为:操作作用M[k]如果存在,返回M中与键k相对应的值,否则返回KeyErrorM[k]=v将映射M中的值v与键k建立关联,若存在则替换该值del M[k]从映射中删除键为k的元组,若不存在,则返回KeyErrorlen(M)返回在映射M中的元组的数量原创 2021-05-14 11:22:01 · 406 阅读 · 0 评论 -
数据结构-优先级队列
优先级队列的抽象数据类型优先级队列的抽象数据类型的实现操作作用P.add(k,v)向优先级队列P中插入一个拥有键k和值v的元组P.min()返回一个元组(k,v),代表优先级队列P中一个包含键和值的元组,该元组的键值是最小值;如果队列为空,将发生错误P.remove_min()从优先级队列中移除一个拥有最小键值的元素,并返回这个被移除的元组P.is_empty~len§~使用未排序列表实现优先级队列操作时间复杂度lenO原创 2021-05-10 00:35:41 · 94 阅读 · 0 评论 -
数据结构-树
文章目录树的基本概念树的定义和属性正式的树定义其他节点关系有序树树的抽象数据类型深度和高度深度高度二叉树二叉树的递归定义二叉树的抽象数据类型二叉树的属性完全二叉树中内部节点与外部节点的关系树的实现二叉树的链式存储结构链式二叉树的更新方法链式二叉树实现方法的性能基于数组表示的二叉树一般树的链式存储结构树的遍历算法树的先序遍历和后序遍历先序遍历/深度优先遍历后序遍历运行时间分析树的广度优先遍历二叉树的中序遍历用Python实现树遍历欧拉遍历树的基本概念非线性的数据结构。树的定义和属性正式的树定义存储一原创 2021-05-09 22:37:43 · 167 阅读 · 0 评论 -
数据结构—链表
文章目录链表单向链表在单向链表的头部插入一个元素在单向链表的尾部插入一个元素从单向链表的头部删除一个元素用单向链表实现栈时间复杂度分析用单向链表实现队列循环链表用循环链表实现队列双向链表哨兵优点双端链表的插入和删除双向两表的基本实现用双向链表实现双端队列位置列表的抽象数据类型节点的引用表示位置含位置信息的列表抽象数据类型双向链表实现位置列表位置列表的排序链表使用list类有一些缺点:1.一个动态数组的长度可能超过实际存储数组元素所需的长度。2.在实时系统中对操作的摊销边界时不可接受的。3.在一个数原创 2021-05-09 13:08:08 · 306 阅读 · 0 评论 -
数据结构-栈、队列和双端队列
文章目录栈栈的抽象数据类型简单的基于数组的栈实现适配器模式用Python的list类实现一个栈分析基于数组的栈的实现队列队列的抽象数据类型基于数组的队列实现循环使用数组栈一系列对象组成的一个集合。这些对象的插入和删除操作遵循先进后出的原则。栈顶:最后一个插入的对象的位置。栈的抽象数据类型操作作用S.push(e)将元素e添加到S的栈顶S.pop()从栈S中移除并返回栈顶的元素S.top()返回栈顶的元素S.is_empty判断是否为空len(S)原创 2021-05-09 10:02:09 · 241 阅读 · 0 评论 -
数据结构-基于数组的序列
文章目录Python序列类型低层次数组引用数组拷贝Example紧凑数组动态数组摊销避免使用等差数列Python序列类型和效率Python的列表和元组类说明insert(k,value)pop(k)/del data[k]remove(value)data1 += data2排序插入排序归并排序多维数据集创建多维列表Python序列类型列表(list)、元组(tuple)、字符串(str)每个类别都使用数组这种低层次的概念表示序列。低层次数组典型的存储单元为字节,相当于8位。每个单元与存储地址相原创 2021-05-08 22:54:58 · 116 阅读 · 0 评论 -
数据结构-递归
文章目录例子阶乘函数递归定义函数实现递归跟踪绘制英式标尺函数实现二分查找应用范围函数实现文件系统Python的操作系统模块函数实现分析递归算法如何判断递归算法的时间复杂度?情形一情形二情形三计算阶乘绘制英式标尺二分查找计算磁盘空间的使用情况递归算法的不足Python中的递归最大深度递归的其他例子线性递归二路递归多重递归消除尾递归定义:函数在执行过程中一次或多次调用其本身。例子阶乘函数递归定义基础情形n = 0迭代情形n = n(n-1)!函数实现递归跟踪说明递归函数的执行过程的一种形式原创 2021-05-08 18:56:39 · 73 阅读 · 0 评论