第二章总结和结对编程情况

第二章总结

1.递归

1.1递归是什么:递归是自己定义自己,直接或间接地调用自己的算法。

1.2递归常见类型:多变元递归、多步递归、嵌套递归、联立递归。

1.3优点:可读性强,结构清晰,为调试提供很大便利;

  缺点:运行效率较低,空间复杂度和时间复杂度都耗费比较大。

2.分治

2.1分治是什么:把一个问题分成若干个相同的子问题,对子问题进行求解。

2.2.分治思想三个阶段:一个较大问题划分为多个子问题、求解子问题、合并子问题的解,形成原始问题的解。

2.3时间复杂度:当 n = 1 时,T(n) = O(1);当 n > 1 时,T(n) = kT(n / m)+ f(n)。

2.4例子应用:大整数的乘法、Strassen矩阵乘法、棋盘覆盖、合并排序、快速排序。

2.5自己对分治思想的体会:看代码的时候把例子的用到分治思想理解了就觉得很好用,但是自己很难去实现分治算法的三步走,一是经验太少,怎么划分问题没有头绪;二是解决问题和合并解的时候思路不清晰,写代码的时候容易把自己绕晕。另外对求空间复杂度记不住,看一次记一次,没有理解透彻。自己尝试先理解代码然后背代码,再试着自己解释代码。

结对编程情况

由于自己对算法有点弱,和队友编程时两个人的思路都比较混乱,然后互相可能都不能理解队友的思路,两个人都有点难受。不过相比于一个人自己编程,会有被督促的感觉,这点算是对我来说比较好的一个方面。

原文地址:https://www.cnblogs.com/Epher/p/11674807.html

时间: 2024-10-05 04:18:38

第二章总结和结对编程情况的相关文章

对二分法思想的理解 及 结对编程情况汇报

一.对二分法思想的理解 1.特点:又称为折半算法,是分治策略的一个典型例子.主要是用于:在已排好序的n个元素组成的数组a[0:n-1]中,找出一个特定的元素x. 2.基本思想:(1)将n个元素分成个数大致相同相同的两半,然后取a[n/2]与x作比较. (2)如果x = a[n/2],则已找到x,返回下标并结束算法: 如果x < a[n/2],则只在数组a的左半部继续搜索x: 如果x < a[n/2],则只在数组a的右半部继续搜索x: 3.时间复杂度:在二分搜索算法中,x每进行比较,待搜索的数据

对分治法思想的体会 &amp; 结对编程情况汇报

一.对分治思想的体会 1.帮助我们解决问题. 分治法,对大的问题拆封成规模较小的问题,我们求解小问题,再把小问题的答案合并起来,得出大问题的答案.大问题思考起来比较乱,犯迷糊,不易想到解决方法,比如汉诺塔问题.分解成小问题,我们就容易想出方法来解决问题 2.时间复杂度低 分治法思想核心是递归,递归的时间复杂度低.算法的复杂度低,提高了算法的质量 二.结对编程情况汇报 3道题都做完且答案正确,第三道题,没有按时间复杂度为O(logn)编程,后来查找资料知道如何写出O(logn)的算法.第一题,开始

对二分法思想的体会及结对编程情况汇报

一.对二分法思想的体会 二分法主要用于有序数组中查找元素,其时间复杂度相比之下更小. 不断变换指针位置缩小查找区间范围. 其主要代码为: 二.结对编程情况汇报 和能力强的同学一起组队,有很多值得学习的地方,比如算法思想.代码风格,甚至快捷键的使用. 探讨思想后合作完成代码,可以理清思路再动手实践,收获颇丰. 原文地址:https://www.cnblogs.com/Wqxxxx--/p/9795146.html

对二分法的理解以及结对编程情况

一. 二分法思想 1. 要求 二分法要求线性表必须采用顺序存储结构,表中元素要按关键字有序排列. 2. 时间复杂度及分析体会 最好情况:1次 最坏情况:O(log n) 这种算法是一种典型的分治的策略,并且这种算法很利于理解,它利用了元素之间的次序关系.相对顺序查找这种方法的效率较高,它能在大多数的情况,例如数据量很大,并且有序的时候,实现更快的数据查找功能,也是比较常用且易于想到的一种算法实现. 3. 代码 #include <iostream>using namespace std;int

对二分算法的理解及结对编程情况

一.对二分算法理解 二分算法,又称折半算法,是应用分治策略的典型例子.二分查找主要对有序序列进行对所指定数字的查找,通过不断缩小搜查范围,在比较中间的数后对左右两个数组进行相同操作,以得到最终的带查找数字.时间复杂度logn,对数组较大时能显著提高程序效率. 二.算法代码 #include <iostream>using namespace std;int main(){ int n,x; cin >> n; if(1<=n<=100){  int a[n];  for

对二分法的理解和结对编程情况

一.对二分法的理解 基本思想:假设数据是按升序排序的,对于给定值x,从序列的中间位置开始比较,如果当前位置值等于x,则查找成功;若x小于当前位置值,则在数列的左半段中查找;若x大于当前位置值则在数列的右半段中继续查找,直到找到为止. 时间复杂度: 最好情况:1次 最坏情况:O(log n)次 感想:二分算法充分利用了元素间的次序关系,采用分治策略,并且便于初学者学习理解.相对顺序查找这种方法的效率较高,它能在大多数的情况,例如数据量很大,并且有序的时候,实现更快的数据查找功能,也是比较常用且易于

对分治法思想的体会及结对编程情况汇报

1.对分治法思想的体会 分治法就是将问题分解为规模更小的子问题,通过一一解决这些子问题,再将这些已经解决了的子问题合并起来,就得到了原问题的解.通过分治法的思想,我们可以更加轻松的解决规模很大的问题,也使得代码更加清晰,易于理解.我们在大一的时候其实已经接触过分治法的思想了,像二分查找,就是利用了分治法思想,使得查找算法的时间复杂度更低. 2.结对编程情况汇报 我和我的搭档一般情况下是独立编程,但是当我们其中一个或着两个人遇到编程难题时,就会互相讨论,一起寻找合适的算法去解决问题. 在之后的学习

《第二章 java EE客户端编程》

主要介绍HTML,CSS,XML,JavaScript,JSON,jQuery等基本知识点:由于文章内列出属性表格比较多,所以没有一一写出来.

《C#高级编程》【第二章】核心C#编程 -- 学习笔记

之前准备省赛,没有时间学这个.现在省赛结束了,时间稍微多了一些所以准备学一点,由于这次省赛的成绩不是很好,所以我应该还是把主要的时间花在算法上.C#的话只能每周花点时间看看.由于没有用太多的时间来学习,所以就想以博客的形式记录自己学习历程.同时在总结归纳的过程中,应该可以使我对它的理解会更加深刻一些. --- 前言 话说,"Hello World!"是每个程序员接触一门语言的第一个程序,当然作为 将来的程序员的 我也一样不例外,我的"Hello World!" us