算法导论
Night__owl
|人总是踌躇不前,被路上的风景阻挡了通往彼岸的桥|
展开
-
算法导论学习笔记(D5)-- 第二章课后习题
第二章 2.3 习题 2.3.1 如图: 2.3.2 不使用哨兵,只要有一个数组被检测完那么就停止,那么循环结束的条件需要发生改变应为 ( i < L.length and j <R.length)具体代码如下。 private static void Merge3(int[] A, int p,int q,int r){ int n1 = q-p+1; ...原创 2020-05-08 05:06:26 · 319 阅读 · 0 评论 -
算法导论(d4)
第二章 算法入门 2.3 算法设计 2.3.2 分治法分析 一个算法的优劣还是需要通过计算时间复杂度来比较,之前插入排序的算法复杂度为O(n^2), 那么下面介绍如何计算分治算法的时间复杂度该如何计算。 还是我们之前提到的三个步骤,分解,解决和合并。 分解:把原问题分解为a个子问题(据情况而定不一定为2),设为Dn 解决:每...原创 2020-05-02 21:17:57 · 226 阅读 · 0 评论 -
算法导论(d3)
第二章 算法入门 2.3 算法设计 2.3.1 分治算法 有很多算法在结构上是递归的,递归这个定义比较难理解,简单的来说就是不断调用自身函数来解决问题。 分治模式的三大步骤: 分解(将原问题分解)->解决(递归的解决子问题,若子问题足够小直接求解)->合并(将子问题结果合并成原问题的解) 这里我们介绍一下合并排序, 分解:n个元素分成各含n/2的子序列 解决:用合并排序法对两个子序列...原创 2020-05-01 06:53:20 · 278 阅读 · 0 评论 -
算法导论(d2)
第二章 算法入门 2.1 插入排序 首先介绍一下基本的排序算法,插入排序。 想象一下当我们在斗地主的时候,我们在一张一张抽牌的过程中总是在拿手中的牌与之前已经排好序的牌进行比较,并将新的牌插入到合适的位置。整个过程如果放慢来看,那么就是用新的牌(M)从第一张牌开始比对,直到遇到一张比M大的 牌才停下,并放在其前面。当然因为人比机器聪明,不仅会从前往后从后往前也...原创 2020-04-30 17:22:37 · 292 阅读 · 0 评论 -
算法导论(d1)
第一章 算法在计算中的作用 所谓算法是定义良好的计算过程,它取一个或一组值作为输入,并产生一个或一组输出。算法是一系列的计算步骤,用来将输入数据转换成输出结果。 e.g. 输入(input):由n个数构成的序列A{a1,a2,a3,a4,...,an} 输出(output):对序列A进行排序后的序列B{b1,b2,b3,b4,...bn} 由输入到输出的这个过程是一个算法实现的过程,...原创 2020-04-29 06:55:58 · 187 阅读 · 0 评论