![](https://img-blog.csdnimg.cn/20201014180756754.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
算法
一只游荡的小幽魂
这个作者很懒,什么都没留下…
展开
-
算法导论 第二章算法基础(1)插入排序
插入排序输入: n个数的一个序列 {a1,a2,⋯ ,an}\{a_1, a_2, \cdots, a_n\}{a1,a2,⋯,an}。输出: 输入序列的一个排序 {a1′,a2′,⋯ ,an′}\{a^\prime_1, a^\prime_2, \cdots, a^\prime_n\}{a1′,a2′,⋯,an′}, 满足 ...原创 2018-12-02 11:20:44 · 154 阅读 · 0 评论 -
算法导论 第二章算法基础(2)插入排序算法的分析
插入排序算法的分析Insertion-Sort需要的时间依赖于输入规模和被排序程度。输入规模的最佳概念依赖于研究的问题。对许多问题,如排序或计算离散傅里叶变化,最自然的量度是输入中的项数。再如两个整数相乘,输入规模的最佳量度是用通常二进制记号表示输入所需的总位数。有时,用两个数而不是一个数来描述输入规模更合适,如某个算法输入的是一个图,则输入规模可以用该图中的顶点数和边数来描述。一个算法在特定...原创 2018-12-02 20:46:17 · 568 阅读 · 0 评论 -
算法导论 第二章 算法基础(3)设计算法
分治法许多算法在结构上是递归的:为解决一个给定的问题,算法一次或多次递归地调用其自身以解决紧密相关的若干子问题。这些算法典型地遵循分治法的思路:将原问题分解为几个规模较小但是类似于原问题的子问题,递归地求解这些子问题,然后再合并这些子问题的解来建立原问题的解。分治法的三个步骤:分解原问题为若干子问题,这些子问题是原问题的规模较小的实例。解决这些子问题,递归地求解各子问题。如果子问题的规模足...原创 2018-12-08 21:30:43 · 166 阅读 · 0 评论 -
算法导论 第三章 函数的增长 (5) 渐近记号
渐近记号用来描述计算法渐近运行时间的记号根据定义域为自然数集 N=0,1,2,⋯N={0,1,2, \cdots}N=0,1,2,⋯ 的函数来定义。渐近记号、函数与运行时间使用渐近记号描述算法的运行时间。渐近记号作用于函数。渐近记号也适用刻画算法的某个方面的函数。Θ\ThetaΘ 记号对于一个给定的函数 g(n)g(n)g(n),用 θ(g(n))\theta(g(n))θ(g(...原创 2018-12-13 23:23:48 · 400 阅读 · 1 评论 -
算法导论 第二章 算法基础(4)思考题
2-1 在归并排序中对小数组采用插入排序虽然归并排序的最坏情况运行时间为 θ(nlog2n)\theta(n \log_2 n)θ(nlog2n),插入排序的最坏情况运行时间为 θ(n2)\theta(n^2)θ(n2),但是插入排序中的常数因子使得它在 nnn 较小时,运行得要更快一些。因此,在归并排序算法中,当子问题足够小时,采用插入排序来使递归的叶变粗是有意义的。考虑对归并排序做这样的...原创 2018-12-09 21:16:14 · 346 阅读 · 0 评论 -
算法导论 第四章 分治策略 (6)分治策略概述
分治策略分解: 分解步骤将问题划分为一些子问题,子问题的形式与原问题一样,只是规模更小。解决: 解决步骤递归地求解出子问题。如果子问题地规模足够小,则停止递归,直接求值。合并: 合并步骤将子问题地解组合成原问题的解。当子问题足够大,需要递归求解时,称之为递归情况。当子问题变得足够小,不再需要递归时,我们说递归已经“触底”,进入了基本情况。递归式递归式与分治方法是紧密相关的,因为使用...原创 2018-12-17 21:48:19 · 188 阅读 · 0 评论 -
算法导论 第四章 分治策略 (7)最大子数组问题
最大子数组问题寻找数组AAA中连续的,元素之和最大的非空子数组的问题被称为最大子数组问题。使用分治策略的求解方法使用分治策略来求解最大子数组问题。使用分治策略意味着我们将子数组划分为两个规模尽量相等的子数组。A[low,high)A[low, high)A[low,high) 的任何连续子数组 A[i,j)A[i, j)A[i,j) 所处的位置必然式以下三种情况之一:完全位于子数组 A[...原创 2018-12-17 23:40:54 · 1073 阅读 · 0 评论