摘要: 我已无法用语言来描述递归有多牛逼。 #include<iostream> #include<vector> #include<algorithm> using namespace std; int max_sub_array(vector<int>& data, int left, int righ 阅读全文
posted @ 2020-11-24 21:03 不妨不妨,来日方长 阅读(450) 评论(0) 推荐(0) 编辑
摘要: 2.1归并排序 问题特点:局部有序 快速合并:比较两有序数组当前最小元素,将较小者逐一合入新数组 输入规模越大,两两合并更有效。 但是数组可能没有局部有序特性,需要进行构建:两两合并 这个方法的本质就是归并排序算法。 归:递归 并:合并 2.2递归式求解 (1)递归树法:直观,不好求 (2)代入法: 阅读全文
posted @ 2020-11-24 20:55 不妨不妨,来日方长 阅读(239) 评论(0) 推荐(0) 编辑
摘要: 性能分析: 时间复杂度:O(n*log(n)) 空间复杂度:O(n) 归并排序算法来自于分而治之思想,“归”是“递归”的意思,“并”是"合并“的意思,就是说将复杂的数组排序问题先进性分解,然后递归的解决小问题,最后合并问题的解。 #include<iostream> #include<vector> 阅读全文
posted @ 2020-11-24 19:44 不妨不妨,来日方长 阅读(268) 评论(0) 推荐(0) 编辑
摘要: 课程目标: 如何判断哪个算法更高效:需分析比较算法运行效率 如何设计正确高效的算法:需掌握算法设计的方法论 1.1算法的由来 1.2算法的定义 要知道算法的定义,首先要知道计算问题这个概念,就是给定数据输入,计算满足某种性质输出的问题。而输入和输出这两个环节中间的部分,就是算法。 比如经典的排序算法 阅读全文
posted @ 2020-11-24 16:57 不妨不妨,来日方长 阅读(296) 评论(0) 推荐(0) 编辑
摘要: 性能分析: 时间复杂度:O(n^2) 空间复杂度:O(1) 但是综合来讲,要比冒泡排序和选择排序好一些。 #include<iostream> #include<vector> using namespace std; int main() { // 首先找出待排序列中最小的数,然后用这个数和原序列 阅读全文
posted @ 2020-11-24 16:37 不妨不妨,来日方长 阅读(214) 评论(0) 推荐(0) 编辑
摘要: 一.sort函数 1.sort函数包含在头文件为#include<algorithm>的c++标准库中,调用标准库里的排序方法可以实现对数据的排序,但是sort函数是如何实现的,我们不用考虑! 2.sort函数的模板有三个参数: void sort (RandomAccessIterator fir 阅读全文
posted @ 2020-11-24 10:13 不妨不妨,来日方长 阅读(920) 评论(0) 推荐(0) 编辑
摘要: 这个比较简单,想清楚基线条件和递归条件就可以了,直接看代码(VS直接运行): #include<iostream> #include<vector> using namespace std; int arrayMax(int data[], int length); int main() { int 阅读全文
posted @ 2020-11-21 20:51 不妨不妨,来日方长 阅读(872) 评论(0) 推荐(0) 编辑
摘要: 递归的特点: (1)递归就是在过程或函数里调用自己;(2)在使用递归时,必须有一个明确的递归结束条件,否则会陷入死循环;(3)递归算法通常比较简洁,但运行效率较低;(4)在递归调用的过程中系统为每一层的返回点、局部变量等开辟了栈来存储,所以递归次数过多容易造成栈溢出。(5)调用另一个函数时,当前函数 阅读全文
posted @ 2020-11-21 19:28 不妨不妨,来日方长 阅读(305) 评论(1) 推荐(0) 编辑
摘要: 简单查找的时间复杂度为O(n) 二分查找的时间复杂度为O(logn) 用递归实现二分查找: 基线条件:数组只包含一个元素。如果如果要查找的值与这个元素相同,就找到了;否则说明不在数组中。 递归条件:把数组分成两半,将其中一半丢弃,并对另一半执行二分查找。 C++代码实现如下(VS可以直接运行): # 阅读全文
posted @ 2020-11-21 18:00 不妨不妨,来日方长 阅读(881) 评论(0) 推荐(0) 编辑
摘要: 写在前面:本教程为windows10安装ubuntu18.04(64位)双系统教程,是我多次安装双系统的经验总结,安装方法同样适用于ubuntu16.04(64位)。为了直观和易于理解,我会尽量图文并茂,并用最通俗的语言完成这篇教程。虽然安装ubuntu18.04和ubuntu16.04的方法一模一 阅读全文
posted @ 2019-10-06 16:59 不妨不妨,来日方长 阅读(264465) 评论(50) 推荐(17) 编辑