随笔分类 -  算法分析与设计

摘要:class Mark { var count: Int var type: Int init(count: Int, type: Int) { self.count = count self.type = type } } func findLcs(_ list1: [Character], _ l 阅读全文
posted @ 2017-02-04 11:09 KbDaVinci 阅读(203) 评论(0) 推荐(0)
摘要:插入排序(只记录代码不作详细分析) 插入排序将输入的元素一个个插入到已排序的队列里,对比是由后往前 代码: func insertSort(_ arr: inout [Elem]) { for i in 1...arr.count-1 { let tmp = arr[i] for j in ... 阅读全文
posted @ 2017-02-03 15:41 KbDaVinci 阅读(371) 评论(0) 推荐(0)
摘要:一:什么是堆? 堆可视为 “以数组方式存储的一棵完全二叉树” 堆又分为最大堆和最小堆, 最大堆就是对于整个二叉树中的每一个节点都满足:节点的键值比其左右子节点的键值都要大,对应的最小堆则是:节点的键值比其左右子节点的键值都要小 二:堆排序的思路 对于一个存储最大堆的数组arr(长度为size), 根节点arr[0]是所有节点中键值最大,将arr[0]和arr[s... 阅读全文
posted @ 2017-02-03 14:03 KbDaVinci 阅读(416) 评论(0) 推荐(0)
摘要:一:简单 Blur 算法 一个像素的颜色值由其邻近的若干像素和自己的颜色值的平均值重新定义,以此达到模糊的效果。 如下图,红色的像素点的值将由它和它周围的24个像素的平均值重新定义。计算的范围一般由一个“半径”来决定,表示由该点为中心、“半径”为距离 辐射的范围,对于下图“半径”为2。 二:shad 阅读全文
posted @ 2016-06-29 14:03 KbDaVinci 阅读(1671) 评论(0) 推荐(0)
摘要:一.采用分治策略:将原问题划分成n个规模较小的但结构和原问题相同的子问题,递归解决这些子问题后合并各个结果从而得到原问题的解。 二.分治策略的步骤: 分解:将原问题分解成一系列子问题 解决:子问题粒度足够小、能直接求解则直接求解,子问题不能直接求解则继续递归分解为更小的子问题 合并:将子问题的结果合 阅读全文
posted @ 2016-06-17 22:33 KbDaVinci 阅读(332) 评论(0) 推荐(0)
摘要:等差数列求和: 等比数列求和: 阅读全文
posted @ 2016-05-12 11:19 KbDaVinci