算法设计与分析
文章平均质量分 51
karin_0
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
算法设计分析——最大元、最小元(分治法)
算法思想: 分解:将数组尽量均等分割 解决:当n=2时,两数比较一次即可知最大元、最小元 找出元素即可,无需合并。 算法代码(java实现): import java.util.Arrays; public class MaxnumMinnum { public static void searchMaxMin(int[]arr,int mm[],int low,int h...原创 2018-10-25 22:15:52 · 2615 阅读 · 0 评论 -
算法设计与分析——快速排序(分治法)
算法思想: 快速排序算法思想基于分治法思想之上,存在分解、解决这两步。 分解: 数组A[p…r]被划分为子数组A[p…q-1]和 A[q+1…r], A[p…q-1]中的每个元素都小于等于A[q],A[q+1…r]中的每个元素都大于等于A[q] q在划分时确定 解决: 通过递归调用快速排序算法,对子数组 A[q+1…r]和A[p…q-1]进行排序 算法伪码: QUICKSORT(A,p,r) ...原创 2018-10-22 22:18:42 · 2560 阅读 · 0 评论 -
算法分析与设计——矩阵链乘(动态规划)
目标:求出矩阵连乘MMi+1┅Mj-1Mj(ij) 所需的最少乘法次数 描述最优解结构 递归地定义最优值(写出动态规划方程) 以自底向上的递推方式计算出最优值 根据计算最优值时得到的信息,以递归方法构造一个最优解 ...原创 2018-10-15 21:22:05 · 1096 阅读 · 0 评论 -
算法设计与分析——数据结构概念
算法特性 有穷性(finite):算法的执行次数有穷,即它包含的计算步骤有穷。 确定性(definite):每条指令都是明确的、无二义的 可行性(effective):每条指令都必须是能够执行的 输入(input):允许有0个或多个输入,取自特定的集合 输出(output):产生一个或多个输出, 与输入量有特定的关系 计算过程与算法的区别在于,计算过程不具有穷性,是个死循环。 算法...原创 2018-10-09 17:08:48 · 962 阅读 · 0 评论 -
算法设计与分析——合/归并排序
算法思想 伪代码 MERGE-SORT A[1…n] 1.If n= 1, done. 2.Recursively sort A[ 1 . . .n/2.]and A[ [n/2]+1 . . n ] . 3.“Merge” the 2 sorted lists. Key subroutine: MERGE 算法复杂度 若将归并算法的时间复杂度记为T(n) c1代价为1,c2代价为2T(n/...原创 2018-09-26 21:49:19 · 1031 阅读 · 0 评论 -
算法设计与分析——插入排序
算法的定义 有穷性(finite):每条指令执行次数有穷性 确定性(define):每条指令的意思明确,无二义性 可行性(effictive):每条指令可执行,即人们用笔和纸做有限次运算也可完成 输入(input):0/1个输入 输出(output):1/n个输出,与输入量存在某种特定关系 算法复杂性分析 时间复杂度 T(n) 时间复杂度即...原创 2018-09-19 22:05:22 · 965 阅读 · 0 评论 -
算法分析与设计——分治法&动态规划
分治法与动态规划 分治法:将问题分解为规模逐渐减小的同类型的子问题 。但是子问题相互独立,不包含公共子问题 动态规划:将问题分解为规模逐渐减小的同类型的子问题 。但是子问题具有重复性。 优化原则:最优子结构性质 问题的最优解中,每一个子问题本身即是该子问题的最优解 即最优决策序列的任何子序列本身一定是相对于子序列的初始、结束状态的最优决策序列 动态规划方法解题步骤 找出最优解的性质,并刻画其结构...原创 2018-10-29 21:14:53 · 492 阅读 · 0 评论 -
计算第n个斐波那契数
斐波那契数列 n>1,F(n)=F(n-1)+F(n-2); F(0)=0; F(1)=1; 求第n个斐波那契数 递归法 利用已知的斐波那契数的递推公式即可 在这里插入代码片 动态规划 递归法求解过程中,可知存在重复求解相同的函数值的情况,导致效率低下 故利用一个数组存储函数值 public class Fibonacci { public static int ...原创 2018-11-03 15:19:53 · 2447 阅读 · 0 评论 -
算法设计与分析——最优二分搜索树(动态规划)
贪心算法原创 2018-11-03 18:41:16 · 4236 阅读 · 0 评论 -
找第k小元素
1.分治法 算法思想 1.分解: 使用Random Partition对数组array进行划分 2.解决 对主元素i分析,若i等于k,则返回该位置;若i<k,说明第k小元素落在数组的array[i+1 …n]之中,递归分析数组array[i+1 …n]的第k-i小元素;若i>k,说明第k小元素落在数组的array[0 …i-1]之中,递归分析数组array[0 …i-1]的第k小元素 ...原创 2019-01-14 21:20:05 · 1983 阅读 · 0 评论
分享