
算法设计与分析
文章平均质量分 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 · 2537 阅读 · 0 评论 -
算法设计与分析——最优二分搜索树(动态规划)
贪心算法原创 2018-11-03 18:41:16 · 4086 阅读 · 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 · 2369 阅读 · 0 评论 -
算法分析与设计——分治法&动态规划
分治法与动态规划分治法:将问题分解为规模逐渐减小的同类型的子问题 。但是子问题相互独立,不包含公共子问题动态规划:将问题分解为规模逐渐减小的同类型的子问题 。但是子问题具有重复性。优化原则:最优子结构性质问题的最优解中,每一个子问题本身即是该子问题的最优解即最优决策序列的任何子序列本身一定是相对于子序列的初始、结束状态的最优决策序列动态规划方法解题步骤找出最优解的性质,并刻画其结构...原创 2018-10-29 21:14:53 · 431 阅读 · 0 评论 -
算法设计与分析——插入排序
算法的定义 有穷性(finite):每条指令执行次数有穷性 确定性(define):每条指令的意思明确,无二义性 可行性(effictive):每条指令可执行,即人们用笔和纸做有限次运算也可完成 输入(input):0/1个输入 输出(output):1/n个输出,与输入量存在某种特定关系 算法复杂性分析时间复杂度 T(n) 时间复杂度即...原创 2018-09-19 22:05:22 · 910 阅读 · 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 · 962 阅读 · 0 评论 -
算法设计与分析——数据结构概念
算法特性有穷性(finite):算法的执行次数有穷,即它包含的计算步骤有穷。确定性(definite):每条指令都是明确的、无二义的 可行性(effective):每条指令都必须是能够执行的 输入(input):允许有0个或多个输入,取自特定的集合 输出(output):产生一个或多个输出, 与输入量有特定的关系计算过程与算法的区别在于,计算过程不具有穷性,是个死循环。算法...原创 2018-10-09 17:08:48 · 851 阅读 · 0 评论 -
算法分析与设计——矩阵链乘(动态规划)
目标:求出矩阵连乘MMi+1┅Mj-1Mj(ij) 所需的最少乘法次数描述最优解结构递归地定义最优值(写出动态规划方程)以自底向上的递推方式计算出最优值 根据计算最优值时得到的信息,以递归方法构造一个最优解...原创 2018-10-15 21:22:05 · 995 阅读 · 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 · 2487 阅读 · 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 · 1910 阅读 · 0 评论