一.基本结构图 二.典例 1.以斐波那契递归为例: Fibonacci(int n) { if (n==1||n==0) return 1; // basis else return Fibonacci(n-1)+Fibonacci(n-2);//递归进行 } 我们找到了解决斐波那契数的方法,但是通 ...
分类:
编程语言 时间:
2020-03-31 12:08:41
阅读次数:
89
选择问题最常见的问题有: "1.1选最大" "1.2同时选最大和最小的算法" "1.3找第二大" "2选第k小(分治策略)" 1.1选最大 选择算法 统一描述:设L是n个算法的集合,从L中选出第k小的元素,11.2同时选最大和最小的算法 设计思想:先选最大,然后把最大的从L中删除,接着选最小。 == ...
分类:
其他好文 时间:
2020-03-29 15:29:21
阅读次数:
148
1.排序的分类 1) 内部排序:指将需要处理的所有数据都加载到内部存储器中进行排序 2) 外部排序:无法全部加载到内存中,需要借助外部存储进行 3)图示: 2.算法的时间复杂度 1) 度量一个程序(算法)执行时间的两种方法 A.事后统计的方法 问题:a.需要实际运行该程序。b.时间也依赖于计算机的硬 ...
分类:
编程语言 时间:
2020-03-21 16:41:05
阅读次数:
66
分治策略 1)将问题分解为规模较小的子问题,子问题与原问题同质 2)迭代或者递归解决每个子问题 3)将子问题的解综合得到原问题解 例子:二分查找Binary Search 1 BinarySearch(T,l,r,x) 2 //输入数组T,下标从l到r,查找数x 3 //输出j,若x在T中输出下标, ...
分类:
编程语言 时间:
2020-03-16 13:17:50
阅读次数:
61
SQL:structure query language SQL操作的对象是二维表,每一行是一个元组。通过逻辑判断和集合操作来取数。 数据的增删查改,合并排序都应该有对应的语法来实现 个人感觉,这种操作二维表的行为都差不多。比如Excel操作的也是二维表,生成透视表的过程,就是不断增加条件筛选数据的 ...
分类:
数据库 时间:
2020-03-04 21:17:46
阅读次数:
102
题目: 这道题有多种实现的思路,这里使用双指针结合数组有序的特点进行解决 思路: m代表A初始时有效元素的个数,n代表B中元素的个数,那么n+m才是A的总长度 从A的最后一个位置开始,设为cur,分别从A和B有效元素中选取最大的一个,进行比较,将较大的放入cur,随之相应的cur--,较大元素所在数 ...
分类:
编程语言 时间:
2020-03-03 13:08:33
阅读次数:
78
一维: 峰值规定:a[i]>a[i-1] and a[i]>a[i+1],假定只存在一个峰值 1 2 1 9 5 0 例如9就是一个峰值 方法一:顺序遍历,时间复杂度O(n) 方法二:分治策略,将列表折半查找,第一次查找n/2,左右两边哪一边大继续折半查找哪一边 def search_peak(al ...
分类:
编程语言 时间:
2020-03-02 14:28:44
阅读次数:
82
输入若已经是排好序的,下列排序算法最快的是() A. 插入排序 B. Shell排序 C. 合并排序 D. 快速排序 解析:若已排好序,使用插入排序的时候只要两两比较一次即可,复杂度为O(n)。 答案:A 拓扑排序是按 AOE 网中每个结点事件的最早发生时间对结点进行排序,这样的说法正确吗? A. ...
分类:
编程语言 时间:
2020-02-27 00:56:42
阅读次数:
80
摘要:递归与分治策略是五大常见算法策略之一,分治策略的思想就是分而治之,即先将一个规模较大的大问题分解成若干个规模较小的小问题,再对这些小问题进行解决,得到的解,在将其组合起来得到最终的解。而分治与递归很多情况下都是一起结合使用的,能发挥出奇效(1+1>2),这篇文章我们将先从递归说起,再逐渐向分治 ...
分类:
编程语言 时间:
2020-01-08 18:51:15
阅读次数:
76
分治法 分治策略: <1>分解:将原序列 a[s...t] 分解成两个子序列 a[s...i-1] 和 a[i+1...t]。其中 i = (s+t)/2; <2>求解子问题:若子序列的长度是0或1,则是有序的,直接返回;否则递归地求解各个子问题。 <3>合并:由于整个子序列存放在数组 a 中,排序 ...
分类:
编程语言 时间:
2020-01-04 18:39:39
阅读次数:
117