介绍 归并排序(MERGE-SORT)是建立在归并操作上的一种有效的排序算法,该算法是采用分治法(Divide and Conquer)的一个非常典型的应用。 将已有序的子序列合并,得到完全有序的序列;即先使每个子序列有序,再使子序列段间有序。 若将两个有序表合并成一个有序表,称为二路归并。归并排序 ...
分类:
编程语言 时间:
2019-11-15 18:16:16
阅读次数:
102
20191331 《信息安全专业导论》第6周学习总结 教材学习内容总结 Polya如何解决问题 1.分析问题 2.列出主要任务 3.编写其余模块 4.根据需要进行重组和改写 polya教会我将一个大问题拆分成许多小问题,将小问题逐一解决,在进行汇总,这样大问题就解决了。这也是分治法的原理。 简单类型 ...
分类:
其他好文 时间:
2019-11-10 20:57:40
阅读次数:
113
快速排序 2019-11-10 11:43:52 by冲冲 1、概念 快速排序(Quick Sort)使用分治法策略。 ① 基本思想是,选择一个基准数,通过一趟排序将要排序的数据分割成独立的两部分;其中一部分的所有数据都比另外一部分的所有数据都要小。然后,再按此方法对这两部分数据分别进行快速排序,整 ...
分类:
编程语言 时间:
2019-11-10 17:51:56
阅读次数:
93
归并排序 2019-11-10 11:41:59 by冲冲 1、概念 归并排序(MERGE-SORT)是利用归并的思想实现的排序方法,该算法采用经典的分治(divide-and-conquer)策略(分治法将问题分(divide)成一些小的问题然后递归求解,而治(conquer)的阶段则将分的阶段得 ...
分类:
编程语言 时间:
2019-11-10 17:44:58
阅读次数:
80
一、基本思想 与分治法相似,基本思想,将求解问题分解成若干个子问题,先求解子问题,然后从这些子问题的解得到原问题的解。 但是它们也有很大的不同之处,即适用于用动态规划法求解的问题,经分解得到的子问题往往不是互相独立的。 二、设计步骤 动态规划法适用于最优化问题,通常可按以下4个步骤设计: 1)找出最 ...
分类:
编程语言 时间:
2019-11-04 13:11:10
阅读次数:
90
一、对动态规划的理解 基本思想: 把所要求解的问题划分为许多个子问题,但子问题之间是有联系的,然后求出子问题的最优解就是原问题的最优解了。与分治法不同的就是其子问题并非独立,是要求得每次子问题最后得出最优解。 具体步骤: 1、划分子问题,确定子问题边界,将问题求解转变成多步判断的过程; 2、定义优化 ...
分类:
其他好文 时间:
2019-11-04 00:09:12
阅读次数:
122
一、对动态规划算法的理解 动态规划算法与分治法很相似,相同之处是将原问题分解为若干个子问题,再根据子问题求得原问题的解。不同之处是动态规划的子问题之间不是相互独立的,经常是有重叠的。所以为了避免重复计算,可以制作一个表来记录已经解决的子问题,当再次遇到子问题时,查表即可得到答案。该算法通常用于求解具 ...
分类:
编程语言 时间:
2019-11-03 18:03:05
阅读次数:
86
一、动态规划 动态规划的实质是分治法和解决冗余。所以,动态规划就是将原问题分解成规模更小的子问题,且原问题的最优解与子问题的最优解相关。动态规划将问题实例分解为更小的/相似的子问题,并存储子问题的解,使得每个子问题只求解一次,最终获得原问题的答案,以解决最优化问题。 二、编程 1、单调递增最长子序列 ...
分类:
其他好文 时间:
2019-11-03 15:05:01
阅读次数:
84
1. 归并排序 归并排序,是创建在归并操作上的一种有效的排序算法,效率为O(nlogn)。1945年由约翰·冯·诺伊曼首次提出。该算法是采用分治法(Divide and Conquer)的一个非常典型的应用,且各层分治递归可以同时进行。速度仅次于快速排序,为稳定排序算法,一般用于对总体无序,但是各子 ...
分类:
编程语言 时间:
2019-10-31 18:32:53
阅读次数:
87
设计一个平均时间为O(n)的算法,在n(1<=n<=1000)个无序的整数中找出第k小的数。 提示:函数int partition(int a[],int left,int right)的功能是根据a[left]~a[right]中的某个元素x(如a[left])对a[left]~a[right]进 ...
分类:
其他好文 时间:
2019-10-28 23:49:59
阅读次数:
175