摘要: 给定n个数组成的序列,求其中最大子段和,并规定其中如果所有数均为负值的时候,那么最大字段和为零。 解决这样的问题需要用的算法是:分治法 基本思路: 1. 划分两个长度基本相同的子段,得出以下三种情况 2. 如果最大和出现在左边,就左边最大子段和为解 3. 如果最大和出现在右边,就右边最大子段和为解 阅读全文
posted @ 2020-10-27 11:24 tianli3151 阅读(259) 评论(0) 推荐(0) 编辑
摘要: 算法导论第六章开始就开始介绍堆排序。 这是个非常难理解的排序算法,主要需要经过三个步骤:1 大顶堆化; 2 利用大顶堆化函数简历大顶堆; 3 最后再利用前面两个函数进行排序 这个算法有几个理解难点需要克服的: 1. 计算堆中的孩子节点要仔细,因为堆排序用的是一位数组表示二维二叉树的概念的,这都是人为 阅读全文
posted @ 2020-10-27 11:22 tianli3151 阅读(157) 评论(0) 推荐(0) 编辑
摘要: 算法导论第九章开始的算法 同时查找最大值和最小值的算法。 本算法并不是直接拿数组中的元素来和最大值和最小值比较的,而是先比较数组中两个数组,然后那其中小的和最小值对比,其中大的和最大值对比,那么算法就可以由原来需要对比2n次,降到只需要对比3n/2次了。 对于一个无序查找最小值的算法一般都如下: t 阅读全文
posted @ 2020-10-27 11:20 tianli3151 阅读(442) 评论(0) 推荐(0) 编辑
摘要: Introduction to Algorithm 算法导论第八章的Column sort是非常有趣的,相当复杂。 要用C++是实现起来是很困难的,因为需要用到几大块的小算法,才能实现。 第一是行间排序,第二是行列变换,第三是前后移动元素,这些算法都组合起来,整个过程就变得很复杂了。 这次我是用二维 阅读全文
posted @ 2020-10-27 11:18 tianli3151 阅读(203) 评论(0) 推荐(0) 编辑
摘要: 吊桶排序的排序速度很快,平均是O(n),能达到这么快的速度其中一个原因是它假设了输入值为范围是[0, 1)的小数。 Introduction to Algorithm这本书里面章8.4的算法,首先把原数组按照一定规律对照到每个吊桶(Bucket)里面,然后对每个Bucket排序,最后把这些Bucke 阅读全文
posted @ 2020-10-27 11:11 tianli3151 阅读(102) 评论(0) 推荐(0) 编辑
摘要: Introduction to Algorithm 算法导论书中第八章的计数排序 counting sort 下面是计数排序 counting sort 的全部代码。 时间效率很高,但是需要额外空间O(n);其实也可以使用等于关键字数个额外空间,节省很多空间的。 [cpp] #include<ios 阅读全文
posted @ 2020-10-27 11:09 tianli3151 阅读(130) 评论(0) 推荐(0) 编辑