随笔分类 -  数据结构与算法

摘要:归并排序 归并排序采用分而治之的原理: - 将一个序列从中间位置分成两个序列; - 在将这两个子序列按照第一步继续二分下去; - 直到所有子序列的长度都为1,也就是不可以再二分截止。这时候再两两合并成一个有序序列即可。 下图中的倒数第三行表示为第一次合并后的数据。其中一组数据为 4 8 , 5 7。 阅读全文
posted @ 2019-08-17 00:57 笑得好美 阅读(199) 评论(0) 推荐(0) 编辑
摘要:快速排序 将列表中第一个元素设定为基准数字,赋值给mid变量,然后将整个列表中比基准小的数值放在基准的左侧,比基准到的数字放在基准右侧。然后将基准数字左右两侧的序列在根据此方法进行排放。 定义两个指针,low指向最左侧,high指向最右侧 然后对最右侧指针进行向左移动,移动法则是,如果指针指向的数值 阅读全文
posted @ 2019-08-17 00:56 笑得好美 阅读(189) 评论(0) 推荐(0) 编辑
摘要:希尔排序 希尔排序(Shell Sort)是插入排序的一种。也称缩小增量排序,是直接插入排序算法的一种更高效的改进版本,该方法的基本思想是:先将整个待排元素序列分割成若干个子序列(由相隔某个“增量(gap)”的元素组成的)分别进行直接插入排序,然后依次缩减增量再进行排序,待整个序列中的元素基本有序( 阅读全文
posted @ 2019-08-17 00:53 笑得好美 阅读(169) 评论(0) 推荐(0) 编辑
摘要:插入排序 插入排序的主要思想是每次取一个列表元素与列表中已经排序好的列表段进行比较,然后插入从而得到新的排序好的列表段,最终获得排序好的列表。 比如,待排序列表为[49,38,65,97,76,13,27,49],则比较的步骤和得到的新列表如下:(带有背景颜色的列表段是已经排序好的,红色背景标记的是 阅读全文
posted @ 2019-08-17 00:51 笑得好美 阅读(171) 评论(0) 推荐(0) 编辑
摘要:选择排序 选择排序改进了冒泡排序,每次遍历列表只做一次交换。为了做到这一点,一个选择排序在他遍历时寻找最大的值,并在完成遍历后,将其放置在正确的位置。 对于冒泡排序来讲选择排序由于交换数量的减少,选择排序通常在基准研究中执行得更快。 阅读全文
posted @ 2019-08-17 00:49 笑得好美 阅读(227) 评论(0) 推荐(0) 编辑
摘要:冒泡排序 阅读全文
posted @ 2019-08-17 00:47 笑得好美 阅读(178) 评论(0) 推荐(0) 编辑
摘要:二分查找 有序列表对于我们的实现搜索是很有用的。在顺序查找中,当我们与第一个元素进行比较时,如果第一个元素不是我们要查找的,则最多还有 n-1 个元素需要进行比较。 二分查找则是从中间元素开始,而不是按顺序查找列表。 如果该元素是我们正在寻找的元素,我们就完成了查找。 如果它不是,我们可以使用列表的 阅读全文
posted @ 2019-08-17 00:45 笑得好美 阅读(552) 评论(0) 推荐(0) 编辑
摘要:二叉树 二叉树的非递归遍历 class Node: def __init__(self, value): self.left = self.right = None self.value = value # 二叉树非递归操作 class Tree(): def __init__(self): sel 阅读全文
posted @ 2019-08-17 00:42 笑得好美 阅读(492) 评论(0) 推荐(0) 编辑
摘要:链表简介与数据结构 单向链表也叫单链表,是表中最简单的一种形式,它的每个节点包含两个域,一个信息域(元素域)和一个链接域。这个链接指向链表中的下一个节点,而最后一个节点的链接域则指向一个空值。 链表的定义 链表的使用 阅读全文
posted @ 2019-08-17 00:35 笑得好美 阅读(1568) 评论(0) 推荐(0) 编辑
摘要:双端队列的概念与数据结构 deque(也称为双端队列)是与队列类似的项的有序集合。它有两个端部,首部和尾部,并且项在集合中保持不变。 deque 特殊之处在于添加和删除项是非限制性的。可以在前面或后面添加新项。同样,可以从任一端移除现有项。在某种意义上,这种混合线性结构提供了单个数据结构中的栈和队列 阅读全文
posted @ 2019-08-17 00:32 笑得好美 阅读(1152) 评论(0) 推荐(0) 编辑
摘要:队列的概念与数据结构 队列是项的有序结合,其中添加新项的一端称为队尾,移除项的一端称为队首。当一个元素从队尾进入队列时,一直向队首移动,直到它成为下一个需要移除的元素为止。最近添加的元素必须在队尾等待。集合中存活时间最长的元素在队首,这种排序成为 FIFO,先进先出,也被成为先到先得。 队列的抽象数 阅读全文
posted @ 2019-08-17 00:24 笑得好美 阅读(406) 评论(0) 推荐(0) 编辑
摘要:栈的概念与数据结构 栈(有时称为“后进先出栈”)是一个元素的有序集合,其中添加移除新元素总发生在同一端。这一端通常称为“顶部”。与顶部对应的端称为“底部”。栈的底部很重要,因为在栈中靠近底部的元素是存储时间最长的。最近添加的元素是最先会被移除的。这种排序原则有时被称为 LIFO,后进先出。它基于在集 阅读全文
posted @ 2019-08-17 00:21 笑得好美 阅读(276) 评论(0) 推荐(0) 编辑
摘要:代码运算时间测试模块:timeit.Timer - timeit模块:该模块可以用来测试一段python代码的执行速度/时长。 - Timer类:该类是timeit模块中专门用于测量python代码的执行速度/时长的。原型为:class timeit.Timer(stmt='pass',setup='pass')。 - stmt参数:表示即将进行测试的代码块语句。 ... 阅读全文
posted @ 2019-08-17 00:16 笑得好美 阅读(458) 评论(0) 推荐(0) 编辑
摘要:算法(Algorithm)是指解题方案的准确而完整的描述,是一系列解决问题的清晰指令,算法代表着用系统的方法描述解决问题的策略机制。也就是说,能够对一定规范的输入,在有限时间内获得所要求的输出。如果一个算法有缺陷,或不适合于某个问题,执行这个算法将不会解决这个问题。不同的算法可能用不同的时间、空间或 阅读全文
posted @ 2019-08-17 00:13 笑得好美 阅读(621) 评论(0) 推荐(0) 编辑

点击右上角即可分享
微信分享提示