程序员必须要掌握的十大经典算法算法一:快速排序算法快速排序是由东尼·霍尔所发展的一种排序算法。在平均状况下,排序n个项目要Ο(nlogn)次比较。在最坏状况下则需要Ο(n2)次比较,但这种状况并不常见。事实上,快速排序通常明显比其他Ο(nlogn)算法更快,因为它的内部循环(innerloop)可以在大部分的架构上很有效率地被实现出来。快速排序使用分治法(Divideandconquer)策略来把
分类:
编程语言 时间:
2019-10-27 16:29:52
阅读次数:
101
本文索引目录: 一、动态规划的基本思想 二、数字三角形、最大子段和(PTA)递归方程 三、一道区间动态规划题点拨升华动态规划思想 四、结对编程情况 一、动态规划的基本思想: 1.1 基本概念: 动态规划算法简单说,利用拆解问题思想,定义问题状态和状态之间的关系,使得问题能够以递推或者是分治的方式去解 ...
分类:
编程语言 时间:
2019-10-26 15:17:42
阅读次数:
128
2019 2020 1学期20192429《网络空间安全专业导论》 第六章 低级程序设计语言与伪代码 6.1 计算机操作 计算机是能够存储、检索和处理数据的 可编程 电子设备。 要改变计算机对数据的处理,只需要改变 指令 即可。 存储、检索和处理 是计算机能够对数据执行的动作。 6.2 机器语言 计 ...
分类:
其他好文 时间:
2019-10-23 00:05:19
阅读次数:
127
递归和分治 + 一个分治法将规模为n的问题分成k个规模为n/m的子问题去解 + 消除递归采用一个用户定义的栈来模拟系统的递归调用工作栈 1. "汉诺塔" 2. "正整数划分" 3. "排列" 4. "斐波那契" 5. "阶乘" ...
分类:
编程语言 时间:
2019-10-22 15:36:43
阅读次数:
106
算法第三章上机实践报告 ①实践题目: 数字三角形 ②问题描述: 给定一个由 n行数字组成的数字三角形如下图所示。试设计一个算法,计算出从三角形 的顶至底的一条路径(每一步可沿左斜线向下或右斜线向下),使该路径经过的数字总和最大。 ③算法描述: 本题明显利用到的是动态规划的算法思想,每个位置的最大路径 ...
分类:
编程语言 时间:
2019-10-21 09:33:47
阅读次数:
79
凸包问题 分治法 求能够完全包含平面上n个给定点的凸多边形。 示例: 一、分治法: (一)算法思路: (这里所说的直线都是有向直线的。) 将数组升序排序,若x轴坐标相同,按照y轴坐标升序排序。 最左边的点p1和最右边的点p_n一定是该集合凸包的顶点。该直线将点分为两个集合,上包为S1,下包为S2。在 ...
分类:
编程语言 时间:
2019-10-19 11:17:02
阅读次数:
148
分治法把大问题分解成很多个同类的小问题,是一个很实用的方法,在解决一些问题的时候非常实用。 结合对时间复杂度的考虑来决定是否该使用分治算法,如果时间复杂度太大则规避使用此方法,而不是盲目使用。 然后这次第二章的练习,比如二分搜索和归并的使用,提高了我对此类算法的熟练程度,在以后的一些排序当中可以适当 ...
分类:
其他好文 时间:
2019-10-16 00:48:15
阅读次数:
99
分治法体会 分治法所能解决的问题一般具有以下几个特征: 1) 该问题的规模缩小到一定的程度就可以容易地解决 2) 该问题可以分解为若干个规模较小的相同问题,即该问题具有最优子结构性质。 3) 利用该问题分解出的子问题的解可以合并为该问题的解; 4) 该问题所分解出的各个子问题是相互独立的,即子问题之 ...
分类:
编程语言 时间:
2019-10-16 00:10:56
阅读次数:
114
分治法的基本思想是什么? 分治法的设计思想是,将一个难以直接解决的大问题,分割成一些规模较小的相同问题,以便各个击破,分而治之。 更准确地说是,将规模为n的问题分解为k个规模较小的子问题,这些子问题相互独立且与原问题相同。递归地解决子问题,然后将解合并得到原问题的解。 什么情况下使用分治法? 分治法 ...
分类:
其他好文 时间:
2019-10-16 00:05:40
阅读次数:
121
分治法本质上就是将大问题分解成小问题,小问题的解可以合并成问题的解。 该问题所分解出的各个子问题是相互独立的,即子问题之间不包含公共的子问题。 我的感想:就像初中课文《走一步,再走一步》,当问题巨大的时候不断分成几个小问题就行,希望我在编程时能实际用上! 二结伴编程的感想 两个人编程,一个为主代码手 ...
分类:
其他好文 时间:
2019-10-15 00:12:33
阅读次数:
96