随笔分类 -  数据结构

摘要:冒泡排序 冒泡排序(英语:Bubble Sort)是一种简单的排序算法。它重复地遍历要排序的数列,一次比较两个元素,如果他们的顺序错误就把他们交换过来。遍历数列的工作是重复地进行直到没有再需要交换,也就是说该数列已经排序完成。这个算法的名字由来是因为越小的元素会经由交换慢慢“浮”到数列的顶端。 冒泡 阅读全文
posted @ 2019-08-16 13:07 echo少儿编程 阅读(259) 评论(0) 推荐(0)
摘要:排序与搜索 排序算法(英语:Sorting algorithm)是一种能将一串数据依照特定顺序进行排列的一种算法。 排序算法的稳定性 稳定性:稳定排序算法会让原本有相等键值的纪录维持相对次序。也就是如果一个排序算法是稳定的,当有两个相等键值的纪录R和S,且在原本的列表中R出现在S之前,在排序过的列表 阅读全文
posted @ 2019-08-16 13:05 echo少儿编程 阅读(157) 评论(0) 推荐(0)
摘要:队列 队列(queue)是只允许在一端进行插入操作,而在另一端进行删除操作的线性表。 队列是一种先进先出的(First In First Out)的线性表,简称FIFO。允许插入的一端为队尾,允许删除的一端为队头。队列不允许在中间部位进行操作!假设队列是q=(a1,a2,……,an),那么a1就是队 阅读全文
posted @ 2019-08-16 12:30 echo少儿编程 阅读(168) 评论(0) 推荐(0)
摘要:栈结构实现 栈可以用顺序表实现,也可以用链表实现。 栈的操作 Stack() 创建一个新的空栈 push(item) 添加一个新的元素item到栈顶 pop() 弹出栈顶元素 peek() 返回栈顶元素 is_empty() 判断栈是否为空 size() 返回栈的元素个数 阅读全文
posted @ 2019-08-15 15:53 echo少儿编程 阅读(141) 评论(0) 推荐(0)
摘要:单向循环链表 单链表的一个变形是单向循环链表,链表中最后一个节点的next域不再为None,而是指向链表的头节点。 实现 阅读全文
posted @ 2019-08-07 23:02 echo少儿编程 阅读(219) 评论(0) 推荐(0)
摘要:双向链表 一种更复杂的链表是“双向链表”或“双面链表”。每个节点有两个链接:一个指向前一个节点,当此节点为第一个节点时,指向空值;而另一个指向下一个节点,当此节点为最后一个节点时,指向空值。 操作 is_empty() 链表是否为空 length() 链表长度 travel() 遍历链表 add(i 阅读全文
posted @ 2019-08-07 21:57 echo少儿编程 阅读(181) 评论(0) 推荐(0)
摘要:链表 为什么需要链表 顺序表的构建需要预先知道数据大小来申请连续的存储空间,而在进行扩充时又需要进行数据的搬迁,所以使用起来并不是很灵活。 链表结构可以充分利用计算机内存空间,实现灵活的内存动态管理。 链表的定义 链表(Linked list)是一种常见的基础数据结构,是一种线性表,但是不像顺序表一 阅读全文
posted @ 2019-07-15 23:10 echo少儿编程 阅读(258) 评论(0) 推荐(0)
摘要:Python中的顺序表 Python中的list和tuple两种类型采用了顺序表的实现技术,具有前面讨论的顺序表的所有性质。 tuple是不可变类型,即不变的顺序表,因此不支持改变其内部状态的任何操作,而其他方面,则与list的性质类似。 list的基本实现技术 Python标准类型list就是一种 阅读全文
posted @ 2019-07-11 16:07 echo少儿编程 阅读(203) 评论(0) 推荐(0)
摘要:顺序表的操作 增加元素 如图所示,为顺序表增加新元素111的三种方式 a. 尾端加入元素,时间复杂度为O(1) b. 非保序的加入元素(不常见),时间复杂度为O(1) c. 保序的元素加入,时间复杂度为O(n) 删除元素 a. 删除表尾元素,时间复杂度为O(1) b. 非保序的元素删除(不常见),时 阅读全文
posted @ 2019-07-11 16:04 echo少儿编程 阅读(178) 评论(0) 推荐(0)
摘要:顺序表的结构与实现 顺序表的结构 一个顺序表的完整信息包括两部分,一部分是表中的元素集合,另一部分是为实现正确操作而记录的信息,即有关表的整体情况的信息,这部分信息主要包括元素存储区的容量和当前表中已有的元素个数两项。 顺序表的两种基本实现方式 图a为一体式结构,存储表信息的单元与元素存储区以连续的 阅读全文
posted @ 2019-07-11 12:59 echo少儿编程 阅读(221) 评论(0) 推荐(0)
摘要:顺序表 在程序中,经常需要将一组(通常是同为某个类型的)数据元素作为整体管理和使用,需要创建这种元素组,用变量记录它们,传进传出函数等,一组数据中包含的元素个数可能发生变化(可以增加或删除元素)。 对于这种需求,最简单的解决方案遍是将这样一组元素看成是一个序列,用元素在序列里的位置和顺序,表示实际应 阅读全文
posted @ 2019-07-07 22:42 echo少儿编程 阅读(331) 评论(0) 推荐(0)
摘要:数据结构 我们如何用python中的类型来保存一个班的学生信息?如果想要快速的通过学生姓名获取其信息呢? 实际上当我们在思考这个问题的时候,我们已经用到了数据结构。列表和字典都可以存储一个班的学生信息,但是想要在列表中获取一名同学的信息时,就要遍历这个列表,其时间复杂度为O(n),而使用字典存储是, 阅读全文
posted @ 2019-07-06 23:22 echo少儿编程 阅读(241) 评论(0) 推荐(0)
摘要:list内置操作的时间复杂度 del slice dict内置操作的时间复杂度 阅读全文
posted @ 2019-07-04 22:08 echo少儿编程 阅读(1495) 评论(0) 推荐(0)
摘要:运行结果: append: 1.253803191+: 1.6207985829999998[i for i in range]: 0.4072384659999999list(range()): 0.22763614999999993extend: 1.818385053insert: 31.74 阅读全文
posted @ 2019-07-03 22:20 echo少儿编程 阅读(227) 评论(0) 推荐(0)
摘要:Python内置类型性能分析 timeit模块 timeit模块可以用来测试一小段Python代码的执行速度。 class timeit_Timer(stmt='pass',setup='pass',timer=<timer function>) Timer是测量小段代码执行速度的类 stmt参数是 阅读全文
posted @ 2019-07-03 14:38 echo少儿编程 阅读(170) 评论(0) 推荐(0)
摘要:常见时间复杂度 常见时间复杂度之间的关系 所消耗的时间从小到大: O(1)<O(logn)<O(n)<O(nlogn)<O(n^2)<O(n^3)<O(2^n)<O(n!)<O(n^n) 阅读全文
posted @ 2019-07-03 13:20 echo少儿编程 阅读(1184) 评论(0) 推荐(0)
摘要:最坏时间复杂度 分析算法时,存在几种可能的考虑: 算法完成工作最少需要多少基本操作,即最优的时间复杂度 算法完成工作最多需要多少基本操作,即最坏时间复杂度 算法完成工作平均需要多少基本操作,即平均时间复杂度 对于最优时间复杂度,其价值不大,因为它没有提供什么有用信息,其反映的只是最乐观最理想的情况, 阅读全文
posted @ 2019-07-03 12:54 echo少儿编程 阅读(262) 评论(0) 推荐(0)
摘要:算法效率衡量 对于同一问题,我们给出了两种解决算法,在两种算法的实现中,我们对程序执行的时间进行了测算,发现两段程序执行的时间相差悬殊,由此我们可以得出结论:实现算法程序的执行时间可以反映出算法的效率,即算法的优劣。 单靠时间值绝对可信吗? 假设我们将第二次尝试的算法程序运行在一台配置古老性能低下的 阅读全文
posted @ 2019-07-02 22:44 echo少儿编程 阅读(381) 评论(0) 推荐(0)
摘要:算法的概念 算法是计算机处理信息的本质,因为计算机程序本质上是一个算法来告诉计算机确切的步骤来执行一个指定的任务,一般地,当算法在处理信息时,会从输入设备或数据的存储地址读取数据,把结果写入输出设备或某个存储地址以后再调用。 算法是独立存在的一种解决问题的方法和思想。 算法的五大特性: 1.输入:算 阅读全文
posted @ 2019-07-02 14:40 echo少儿编程 阅读(242) 评论(0) 推荐(0)