
python数据结构和算法
充值修改昵称
这个作者很懒,什么都没留下…
展开
-
数据结构和算法(十三)快速排序
文章目录定义算法步骤动图分析过程分析python代码实现时间复杂度稳定性定义快速排序(英语:Quicksort),又称划分交换排序(partition-exchange sort),通过一趟排序将要排序的数据分割成独立的两部分,其中一部分的所有数据都比另外一部分的所有数据都要小,然后再按此方法对这两部分数据分别进行快速排序,整个排序过程可以递归进行,以此达到整个数据变成有序序列。算法步骤挑选基准值:从数列中挑出一个元素,称为“基准”(pivot)。分割:重新排序数列,所有比基准值小的元素摆放在基原创 2020-05-11 19:59:46 · 291 阅读 · 0 评论 -
数据结构和算法(十二)插入排序
文章目录定义算法步骤动图分析过程分析python实现插入排序时间复杂度稳定性定义插入排序(英语:Insertion Sort)是一种简单直观的排序算法。它的工作原理是通过构建有序序列,对于未排序数据,在已排序序列中从后向前扫描,找到相应位置并插入。插入排序在实现上,在从后向前扫描过程中,需要反复把已排序元素逐步向后挪位,为最新元素提供插入空间。算法步骤将第一元素当做一个有序序列,第二个到...原创 2020-05-08 14:19:04 · 366 阅读 · 0 评论 -
数据结构和算法(十一)选择排序
文章目录定义算法步骤动图分析过程分析python实现选择排序选择排序优化(二元选择排序)时间复杂度稳定性定义选择排序(Selection sort)是一种简单直观的排序算法。它的工作原理如下。首先在未排序序列中找到最小(大)元素,存放到排序序列的起始位置,然后,再从剩余未排序元素中继续寻找最小(大)元素,然后放到已排序序列的末尾。以此类推,直到所有元素均排序完毕。选择排序的主要优点与数据移动...原创 2020-04-29 14:33:33 · 356 阅读 · 0 评论 -
数据结构和算法(十)冒泡排序
文章目录定义算法步骤动图分析过程分析python实现冒泡排序冒泡排序第一次优化冒泡排序第二次优化冒泡排序的变形——鸡尾酒排序时间复杂度稳定性定义冒泡排序是一种简单的排序算法。它重复地遍历要排序的数列,一次比较两个元素,如果他们的顺序错误就把他们交换过来。遍历数列的工作是重复地进行直到没有再需要交换,也就是说该数列已经排序完成。这个算法的名字由来是因为越小的元素会经由交换慢慢“浮”到数列的顶端。...原创 2020-04-15 13:48:24 · 462 阅读 · 0 评论 -
数据结构和算法(九)双端队列
文章目录定义python 实现双端队列经典算法题定义双端队列(deque,全名double-ended queue),是一种具有队列和栈的性质的数据结构。双端队列中的元素可以从两端弹出,其限定插入和删除操作在表的两端进行。双端队列可以在队列任意一端入队和出队。python 实现双端队列class Deque(object): """ 实现双端队列 """ def __init_...原创 2020-04-14 10:56:50 · 334 阅读 · 0 评论 -
数据结构和算法(八)队列
文章目录定义python内置队列实现python实现queue定义队列(queue)是只允许在一端进行插入操作,而在另一端进行删除操作的线性表。队列是一种先进先出的(First In First Out)的线性表,简称FIFO。允许插入的一端为队尾,允许删除的一端为队头。队列不允许在中间部位进行操作!假设队列是q=(a1,a2,……,an),那么a1就是队头元素,而an是队尾元素。这样我们就...原创 2020-04-13 14:24:44 · 198 阅读 · 0 评论 -
数据结构和算法(七)栈
定义栈又名堆栈,可存入数据元素、访问元素、删除元素,其特点是只能在一端进行数据的输入(入栈)和输出(出栈)。由于栈数据结构只允许在一端进行操作,因而按照后进先出(LIFO, Last In First Out)的原理运作。python 实现栈结构class Stack(object): """ 堆栈实现 """ def __init__(self): self.item = ...原创 2020-04-13 14:23:51 · 160 阅读 · 0 评论 -
数据结构和算法(六)双向循环链表
文章目录定义优势python实现双向循环链表头部插入节点指定位置插入节点删除节点定义双向循环链表是在双向链表的基础上发展的,双向链表的最后一个节点指向起始节点,起始节点的上一个节点指向最后一个节点,就得到双向循环链表。优势向循环链表比双向链表具有更多的优势,节点的增加和删除有很多优化的地方,从起点开始不必循环完整个链表就可以增加或删除节点。python实现双向循环链表头部插入节点...原创 2020-04-13 14:22:56 · 319 阅读 · 0 评论 -
数据结构和算法(五)双向链表
文章目录定义优势python 实现双向链表头部插入节点尾部插入节点指定位置插入节点删除节点定义双向链表每个节点有两个链接:一个指向前一个节点,当此节点为第一个节点时,指向空值;而另一个指向下一个节点,当此节点为最后一个节点时,指向空值。优势双向链表可以从任何一个节点访问前一个节点,也可以访问后一个节点,以至整个链表。双向查找节点时很便利,一般是在需要大批量的另外储存数据在链表中的位置的时...原创 2020-04-13 14:18:58 · 364 阅读 · 0 评论 -
数据结构和算法(四)单向循环链表
文章目录定义优势python 实现定义单链表的一个变形是单向循环链表,只不过单向循环链表最后一个节点不再指向空,而是指向头节点,从而形成了一个环。优势对单向链表中任一个节点的访问都需要从头结点开始;而对单向循环链表从任意节点出发都能遍历整个列表,极大的增强了其灵活性。python 实现class Node(object): """ 节点 """ def __init__(se...原创 2020-04-13 14:17:50 · 190 阅读 · 0 评论 -
数据结构和算法(三)单链表
文章目录为什么需要链表链表节点的实现单链表的实现头部插入节点尾部插入节点指定位置插入删除节点完整代码链表与顺序表的对比为什么需要链表顺序表的构建需要预先知道数据大小来申请连续的存储空间,而在进行扩充时又需要进行数据的搬迁,所以使用起来并不是很灵活。链表结构可以充分利用计算机内存空间,实现灵活的内存动态管理。链表链表是一种线性表,但是不像顺序表一样连续存储数据,而是在每一个节点里存放下一个...原创 2020-04-13 14:16:56 · 359 阅读 · 0 评论 -
数据结构和算法(二)顺序表
文章目录顺序表的定义顺序表的两种实现方式顺序表的操作删除元素python实现顺序表顺序表的定义将元素顺序的放在一块连续的存储空间里,元素间的顺序关系由它们的存储顺序自然表示。#顺序表的基本形式a表示的是顺序表的基本布局,数据本身元素连续存储,每个元素所占的存储单元大小相同。元素的下标是其逻辑地址,而元素存储的物理地址(实际内存地址)可以通过存储区的起始地址Loc (e0)加上逻辑地址(第...原创 2020-04-13 14:04:53 · 462 阅读 · 0 评论 -
数据结构和算法(一)时间复杂度
文章目录引入执行时间反应算法效率大O表示法时间复杂度的计算最坏时间复杂度常见算法时间复杂度常见时间复杂度之间的关系引入先看一道题如果 a+b+c=1000,且 a2+b2=c^2(a,b,c 为自然数),如何求出所有a、b、c可能的组合?解法一:import timestart_time = time.time()for a in range(1001): for b in ran...原创 2020-04-13 14:02:27 · 382 阅读 · 0 评论