算法设计与分析
文章平均质量分 70
沙雕是沙雕是沙雕
一个认真学习的沙雕
展开
-
《算法设计与分析》——顺序检索算法
顺序检索算法原创 2021-06-29 09:45:16 · 211 阅读 · 0 评论 -
《算法设计与分析》——子数组换位问题
子数组换位问题1. 问题2. 一般算法2.1 初步思考2.2 具体做法2.3 代价分析3. 采用分治算法参考:经典算法之子数组换位问题1. 问题设a[0:n-1]是一个有n个元素的数组,k(0<=k<=n-1)是一个非负整数。试设计一个算法将子数组a[0:k]与a[k+1,n-1]换位。要求算法在最坏情况下耗时O(n),且只用到O(1)的辅助空间。2. 一般算法2.1 初步思考最简单的方法就是循环(n-(k+1))次=(n-k-1)次,将a数组的末尾数字插入到a[0]之前。注:a原创 2021-03-26 23:24:28 · 473 阅读 · 0 评论 -
《算法设计与分析》——迭代法求递归方程
迭代法1. 直接迭代-Hanoi塔算法2. 换元迭代-二分归并排序3. 归纳验证1. 直接迭代-Hanoi塔算法设n个盘子的移动次数为T(n)T(n)T(n):T(n)=2T(n−1)+1T(n)=2T(n-1)+1T(n)=2T(n−1)+1T(1)=1T(1)=1T(1)=1迭代:2. 换元迭代-二分归并排序将对n的递推式换成对其他变元 k 的递推式对k直接迭代将解(关于k的函数)转换成关于 n 的函数MergeSort(A,p,r)输入∶数组 A【p…r】输出∶按递增顺原创 2021-03-21 23:18:34 · 2130 阅读 · 1 评论 -
《算法设计与分析》——递归
递归1. 实例1.1 阶乘函数1.2 Fibonacci函数1.3 Ackerman函数(双递归)1. 实例1.1 阶乘函数1.2 Fibonacci函数1.3 Ackerman函数(双递归)原创 2021-03-21 21:04:23 · 375 阅读 · 0 评论 -
《算法设计与分析》——用检索讨论时间复杂度
检索1. 检索问题2. 顺序检索算法2.1 最坏情况的时间估计2.2 平均情况的时间估计3. 改进顺序检索算法3.1 最坏情况的时间估计3.2 平均情况的时间估计1. 检索问题输入:(1)升序排列的数组L(2)元素数n(3)需要检索的数x输出:j如果x在数组L中,j是x首次出现的下标否则j=0基本运算:x与L中的元素比较2. 顺序检索算法j =1, 将 x 与 L [ j ]比较:如果 x = L [ j ],则算法停止,输出 j;如果不等,则把 j 加1,继续 x 与 L原创 2021-03-13 11:52:32 · 2396 阅读 · 5 评论 -
java中的>>=,<<=,&=,^=,|=
目录|=>>=<<=|=1.|是按位或操作,就是只要有一个1就是1,两个都是0才是02. a|=b等价于a=a|bpublic static void main(String[] args) { int a = 5; // 0000 0101 int b = 3; // 0000 0011 a |= b; // 0000 00111 System.out.println(a);}>>=1.>>是右移后赋值2.实例x原创 2021-02-26 23:43:03 · 2351 阅读 · 1 评论 -
快速排序
目录快速排序举例说明代码实现时间复杂度(均分)空间复杂度(均分)时间复杂度(不均分)空间复杂度(不均分)稳定性参考快速排序快速排序算法基于分治策略,其基本思想为:从一个数组中随机选出一个数N(作为基准值),通过一趟排序将数组分割成三个部分(小于N的区域 、等于N的区域 、大于N的区域),然后再按照此方法对小于区的和大于区分别递归进行,从而达到整个数据变成有序数组。举例说明以 47、29、71、99、78、19、24、47 数列为例进行排序。一般选择中间的一个数或者头尾的数,这里直接选择第 1 个数原创 2021-01-21 00:05:02 · 250 阅读 · 0 评论 -
《算法设计与分析》—— 算法的复杂度分析2
算法的复杂度分析21. 时间复杂度1.1 事后估计法1.2 事前估计法2. 空间复杂度3. 常用的算法的时间复杂度和空间复杂度1. 时间复杂度1.1 事后估计法利用计算机内部的计时功能(可以精确到毫秒级),记录实现了某个算法的程序的运行时间。在 JAVA 程序中,可以调用System.currentTimeMillis()获取统时间,该时间以毫秒为单位。在待估算执行时间的程序执行前放置,获取开始时间startTime;在程序执行后放置,获取结束时间 endTime;两个时间相减,即可获取程序的实际执原创 2021-02-03 20:20:32 · 453 阅读 · 0 评论 -
《算法设计与分析》—— 算法的复杂度分析
算法的复杂度分析1. 定义2. 时间复杂度2.1 种类2.2 实例3. 空间复杂度4. 渐进时间复杂度4.1 (重点)渐近上界记号:OOO(big-oh)4.2 渐近下界记号:ΩΩΩ(big-omege)4.3 渐近紧确界记号:ΘΘΘ(big-theta)4.4 非渐近紧确上界:ooo(small-oh)4.5 非渐近紧确下界:ωωω(small-omege)4.6 渐近记号ΘΘΘ、OΟO、ooo、ΩΩΩ、ωωω关系参考:1.算法设计与分析 —— 算法的复杂度分析2.算法导论------渐近记号Θ、Ο原创 2021-02-03 18:11:56 · 426 阅读 · 0 评论