算法导论学习
正在引导
这个作者很懒,什么都没留下…
展开
-
算法导论-Python实现-插入排序
简单实现升序的插入排序: 原理很简单,每次从未排序的序列顶部取出一个元素和排好序的尾部比较,知道大于或等于排好序中时停止。重复上面步骤。 一下是实现A=(5, 2, 4, 6, 1, 3)示意图: 代码实现:import timeA = list(range(0, 100000))start = time.clock()for j in range(1, 100000): ...原创 2018-07-30 21:37:22 · 235 阅读 · 0 评论 -
算法导论-Python实现-合并排序
插入排序在最好的情况下(排序的序列正好是想要的结果时)速度很快,可以是输入项数的 n 线性时间,但在最坏的情况下(排序的序列和结果正好相反时),时间可以是 n 的平方时间。所以排列所需要的时间取决于序列的排序情况。 合并排序原理: 合并算法就是提前排序,也就是分治策略,将原序列分为很多小序列,将小序列排好序之后进行合并,然后得到最终的结果。 以下是利用合并法排序A = (5, 2, 4, 7...原创 2018-07-31 19:18:25 · 314 阅读 · 0 评论 -
算法导论-Python实现-最大子数组
最大子数组: 最大子数组是求数组中连续的子数组的和最大 用分治法的思想去求解,先将数组对半分,最大子数组的位置有三种情况 1.子数组全部在中点的右边 2.子数组全部在中点的左边。 3.子数组部分在中点的左边,另一部分在中点的右边。 只要分别求出这三种情况的最大值比较,取最大的即为最大子数组 如下是数组A = [13, -3, -25, 20, -3, -16, -23, 18, 2...原创 2018-08-01 20:53:36 · 389 阅读 · 0 评论 -
算法导论-Python实现-堆排序
堆排序: 堆排序是利用堆这种数据结构而设计的一种排序算法,堆排序是一种选择排序,平均时间复杂度均为O(nlogn),与归并算法排序相比较的优点是它在数据的原地址进行排序,不需要额外的空间存储临时数据。堆是二叉树的一种。在代码实现过程中使用的是数组对堆进行存储。 如下图所示,是数组A=(4, 1, 3, 2, 16, 9, 10, 14, 8, 7)的最大堆示意图: Max_Heapify...原创 2018-08-03 00:20:12 · 420 阅读 · 0 评论 -
算法导论-Python实现-快速排序
快速排序: 对于包含 n 个数的输入数组,快速排序算法的复杂度在最坏的情况下是Θ(n^2),虽然在最坏的情况下和插入排序相近,但是最坏的情况出现的概率很低,快速排序是实际应用中最好的选择,平均排序时间是Θ(nlgn)。 快速排序的原理也是使用分治策略,选出一个序列中的元素作为主元,然后让序列左边的都小于等于主元,右边的序列大于等于主元。由于是在序列的原地址进行的排列,当递归完成之后,排序也就完...原创 2018-08-03 15:52:01 · 546 阅读 · 0 评论