数据结构与算法
卢国舅
KEEP GOING , DON'T QUIT
展开
-
链表之双向循环链表
前言 双向链表:链表之双向链表 双向循环链表是双向链表的变化形式,双向链表的尾部节点的后继节点None,双向循环节点的尾部节点的后继节点指向链表的头节点。 双向循环链表的结构如图1所示: 图一双向循环链表结构图一 双向循环链表结构图一双向循环链表结构 编程实现 class Node: def __init__(self, data): self.data = data ...原创 2019-12-13 17:23:27 · 323 阅读 · 0 评论 -
链表之循环链表
前言 单向链表:链表之单向链表 循环链表是单向链表的变化形式。单向链表的尾部的指针域是空的,而循环链表的尾部指针是指向链表的头结点的,其结构如图一所示。 图一循环链表结构 图一 循环链表结构图一循环链表结构 从上面结构可以看出,循环链表的节点形成了一个圈。在进行遍历时,可以从任意节点开始。如果记录了尾部节点的话,循环链表的操作会方便很多,比如,可以实现O(1)时间的表头/表尾插入和O(1)时间的...原创 2019-12-13 13:15:39 · 216 阅读 · 0 评论 -
链表之双向链表
前面已经总结过单向链表了,现在总结一下双向链表。 线性链表之单向链表 单向链表和双向链表区别在哪? 单向链表,顾名思义,其方向是单向的,从一个节点只能获取下一个节点,无法获取节点的上一个节点的信息。 双向链表,其方向是双向的,通过一个节点,我们既可以获取该节点的下一个节点信息,亦可以获取上一个节点的信息 (一) 双向链表 结构 双向链表的结构如下图所示:节点方向是双向的,1节点是链表头部,4节点是...原创 2019-12-12 17:14:58 · 304 阅读 · 0 评论 -
链表之单向链表
在进行存储数据时,你请求计算机提供存储空间,计算机会给你一个存储地址。当有很多数据需要存储的时候,可以采用两种形式——数组和链表,那么这两种方式又有什么区别呢? (一) 数组与链表 假设大学教室的某排座椅11个,从左到右排号,0-10号,这类似内存空间,现在某宿舍6名女生来上自习,从0号开始入座,入座之后,他们都是连续的挨在一起的。假设现在某女同学的男朋友来了,非得和她坐在一起,那么这个女生之后其...原创 2019-12-11 16:30:53 · 287 阅读 · 0 评论 -
排序算法之希尔排序
希尔排序,也称递减增量排序算法,是插入排序的一种更高效的改进版本。但希尔排序是非稳定排序算法 插入排序对于大规模的乱序数组的时候效率是比较慢的,因为它每次只能将数据移动一位,希尔排序为了加快插入的速度,让数据移动的时候可以实现跳跃移动,节省了一部分的时间开支。跳跃的间隔是变化的,最初可以选择这个数组长度的一半,接下来就是上一次跳跃间隔的一半。可以发现,当间隔为1时,就是普通的插入排序法 下面来展示...原创 2019-12-06 15:11:03 · 231 阅读 · 0 评论 -
排序算法之插入排序
原理 插入排序的思想和我们打扑克摸牌的时候一样,从牌堆里一张一张摸起来的牌都是乱序的,我们会把摸起来的牌插入到左手中合适的位置,让左手中的牌时刻保持一个有序的状态。 那如果我们不是从牌堆里摸牌,而是左手里面初始化就是一堆乱牌呢? 一样的道理,我们把牌往手的右边挪一挪,把手的左边空出一点位置来,然后在乱牌中抽一张出来,插入到左边,再抽一张出来,插入到左边,再抽一张,插入到左边,每次插入都插入到左边合...原创 2019-11-30 15:31:50 · 129 阅读 · 0 评论 -
排序算法之选择排序
思路 首先,找到数组中最小的元素,拎出来,将它和数组的第一个元素交换位置,第二步,在剩下的元素中继续寻找最小的元素,拎出来,和数组的第二个元素交换位置,如此循环,直到整个数组排序完成。 至于选大还是选小,这个都无所谓,你也可以每次选择最大的拎出来排,也可以每次选择最小的拎出来的排,只要你的排序的手段是这种方式,都叫选择排序 我的理解: 类似双指针:外层指针,内层指针。 **外层指针:**负责控制遍...原创 2019-11-30 13:37:41 · 118 阅读 · 0 评论 -
数据结构与算法学习大纲
数据结构与算法前言学习大纲排序算法冒泡法排序 前言 …非科班出生的码农,孜孜不倦的学习编程,希望能提高编程能力。最近打算开始学习数据结构与算法方便的内容。特意写下这个博客,见证该部分内容学习的起点。 …需要说明的是,内容的记录的主要目的有两个:一,记录学习内容,便于后续的学习与复习。二、知识的搬运因此在学习的过程中,会有很多别的好的文章的链接,在此感谢这些文章的贡献者。 学习的目标是每天能学习一种...原创 2019-11-30 12:02:22 · 519 阅读 · 0 评论 -
排序算法之冒泡法
冒泡排序 采用冒泡排序法,你既可以从大往小排序,也可以从小往大进行排序,这取决于里。当然了,二者代码稍有不同。本示例采用的是从大往小排。 原理 在一次遍历中经过交换,将最小的元素放在最后边,此时,最后一个元素是有序的,其他的认为是无序的。接着进行下一次遍历,将剩余元素中最小的放在倒数第二个位置,以此类推。 python3代码实现 def BubbleSort(listArr:list): ...原创 2019-11-30 11:56:13 · 157 阅读 · 0 评论