数据结构与算法(python)
melody的张鱼小丸子
这个作者很懒,什么都没留下…
展开
-
数据结构与算法(Python)Day8(树、二叉树(广度优先遍历、深度优先遍历))
文章目录树树的概念树的相关术语树的种类二叉树的性质层次遍历(广度优先遍历)深度优先遍历二叉树由遍历确定一棵树树树的概念树(英语tree)是一种抽象数据类型(ADT)或是实作这种抽象数据类型的数据结构,用来模拟具有树状结构性质的数据集合。它是由n(n>=1)个有限个节点组成一个具有层次关系的集合。把它叫做“树”是因为它看起来像一棵倒挂的树,也就是说它是根朝上,而叶朝下的。它具有以下的特点:每个节点有零个或多个子节点没有父节点的节点称为根节点每一个非根节点有且只有一个父节点除了根节点外,每个原创 2020-08-01 10:01:39 · 418 阅读 · 0 评论 -
数据结构与算法(Python)Day7(归并排序、二分法查找、常见排序算法效率比较)
文章目录归并排序常见排序算法效率比较搜索二分法查找归并排序“拆-排-合”归并排序是采用分治法的一个非常典型的应用。归并排序的思想就是先递归分散数组,再合并数组。将数组分解最小之后,然后合并两个有序数组,基本思路是比较两个数组的最前面的数,谁小就先取谁,取了后相应的指针就往后移一位。然后再比较,直至一个数组为空,最后把另一个数组的剩余部分复制过来即可。#coding:utf-8def merge_sort(alist): '''归并排序''' n=len(alist) i原创 2020-07-30 22:39:27 · 323 阅读 · 0 评论 -
数据结构与算法(Python)Day6(希尔排序、快速排序)
文章目录希尔排序希尔排序过程快速排序希尔排序希尔排序(Shell Sort)是插入排序的一种。也称缩小增量排序,是直接插入排序算法的一种更高效的改进版本。希尔排序是非稳定排序算法。希尔排序是把记录按下标的一定增量分组,对每组使用直接插入排序算法排序;随着增量逐渐减少,每组包含的关键词越来越多,当增量减至1时,整个文件恰被分成一组,算法便终止。希尔排序过程希尔排序的基本思想是:将数组列在一个表中并对列分别进行插入排序,重复这过程,不过每次用更长的列(步长更长了,列数更少了)来进行。最后整个表就只有一原创 2020-07-28 22:11:24 · 173 阅读 · 0 评论 -
数据结构与算法(Python)Day5(下)(选择排序、插入排序)
选择排序选择排序(Selection sort)是一种简单直观的排序算法。它的工作原理如下:首先在未排序序列中找到最小(大)元素,存放到排序序列中找到最小(大)元素,存放到排序序列的起始位置,然后,再从剩余未排序元素中继续寻找最小(大)元素,然后放到已排序序列的末尾。以此类推,直到所有元素均排序完毕。选择排序的主要优点与数据移动有关。如果某个元素位于正确的最终位置上,则它不会被移动。选择排序每次交换一对元素,它们当中至少有一个将被移到其最终位置上,因此对n个元素的表进行排序总共进行至多n-1次交换。在所原创 2020-07-27 16:14:29 · 117 阅读 · 0 评论 -
数据结构与算法(Python)Day5(上)(栈、队列、双端队列、冒泡排序)
文章目录栈与队列的概念栈创建一个新的栈添加一个新的元素item到栈顶弹出栈顶元素返回栈顶元素判断栈是否为空返回栈的元素个数队列Queue()创建一个空的队列enqueue(item)往队列中添加一个item元素dequeue()从队列头部删除一个元素is_empty()判断一个队列是否为空size()返回队列的大小双端队列Deque()创建一个空的双端队列add_front(item)从队头加入一个item元素add_rear(item)从队尾加入一个item元素remove_front()从队头删除一个i原创 2020-07-26 17:58:27 · 464 阅读 · 0 评论 -
数据结构与算法(Python)Day4(双向链表、单向循环链表[构造、添加元素、删除元素、遍历、判断是否为空、长度])
文章目录双向链表构建双向链表判断链表是否为空(与单链表同)链表长度遍历添加元素:头插法添加元素:尾插法添加元素:指定位置删除节点查找节点是否存在单向循环链表构建单向循环链表判断链表是否为空链表长度遍历整个列表添加元素:头插法添加元素:尾插法添加元素:指定位置添加元素删除元素查找元素双向链表格式构建双向链表#coding:utf-8class Node(object): '''节点''' def __init__(self,item): self.elem=item原创 2020-07-25 14:46:17 · 752 阅读 · 0 评论 -
数据结构与算法(Python)Day3(下)(单链表头插法、指定位置插入元素、移除元素、与顺序表对比)
文章目录仔细仔细理解单链表各种操作的程序方法流程图头插法指定位置插入元素移除元素链表与顺序表的对比仔细仔细理解单链表各种操作的程序#单链表的构造#coding:utf-8class Node(object): '''节点''' def __init__(self,elem): self.elem = elem self.next = Noneclass SingleLinkList(object): '''单链表''' def _原创 2020-07-23 22:31:23 · 1014 阅读 · 1 评论 -
数据结构与算法(Python)Day3(上)(链表、单链表的构造、a,b=b,a)
链表在程序中,经常需要将一组(通常是同为某个类型的)数据元素作为整体管理和使用,需要创建这种元素组,用变量记录它们,传进传出函数等。一组数据中包含的元素个数可能发生变化(可以增加或删除元素)。对于这种需求,最简单的解决方案便是将这样一组元素看成一个序列,用元素在序列里的位置和顺序,表示实际应用中的某种有意义的信息,或者表示数据之间的某种关系。这样的一组序列元素的组织形式,我们可以将其抽象为线性表。一个线性表是某类元素的一个集合,还记录着元素之间的一种顺序关系。线性表是最基本的数据结构之一,在实际程序中原创 2020-07-22 16:28:35 · 209 阅读 · 0 评论 -
数据结构与算法(Python)Day2(顺序表、元素增加、删除)
文章目录顺序表的基本形式顺序表的结构顺序表的一体式结构与分离式结构元素存储区替换扩充的两种策略增加元素删除元素顺序表的基本形式图a 表示的是顺序表的基本形式,数据元素本身连续存储,每个元素所占的存储单元大小固定相同,元素的下标是其逻辑地址,而元素存储的物理地址(实际内存地址)可以通过存储区的起始地址Loc(e0)加上逻辑地址(第i个元素)与存储单元大小(c)的乘积计算而得,即:Loc(ei)=Loc(e0)+ci*故,访问置顶元素时无需从头遍历,通过计算便可以获得对应地址,其时间复杂度为O(1)。原创 2020-07-20 16:49:18 · 589 阅读 · 0 评论 -
数据结构与算法(Python)Day1(算法介绍、时间复杂度、timeit模块、数据结构介绍)
文章目录数据结构与算法(Python)算法的概念算法的五大特征题目:如果a+b+c=1000,且a²+b²=c²(a,b,c为自然数),如何求而出所有a、b、c可能的组合?优化时间复杂度的几条基本计算规则常见时间复杂度Python内置类型性能分析timeit模块list内置操作的时间复杂度dict内置操作的时间复杂度数据结构引入算法和数据结构的区别抽象数据类型(Abstract Data Type)数据结构与算法(Python)算法的概念算法是计算机处理信息的本质,因为计算机程序本质上是一个算法告诉计原创 2020-07-19 09:59:42 · 524 阅读 · 0 评论