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

一、对分治思想的体会

1、帮助我们解决问题。

分治法,对大的问题拆封成规模较小的问题,我们求解小问题,再把小问题的答案合并起来,得出大问题的答案。大问题思考起来比较乱,犯迷糊,不易想到解决方法,比如汉诺塔问题。分解成小问题,我们就容易想出方法来解决问题

2、时间复杂度低

分治法思想核心是递归,递归的时间复杂度低。算法的复杂度低,提高了算法的质量

二、结对编程情况汇报

3道题都做完且答案正确,第三道题,没有按时间复杂度为O(logn)编程,后来查找资料知道如何写出O(logn)的算法。第一题,开始没有语法错误,但是答案不正确,因为没有用多几个不同特殊的例子去检验答案的正确性。

第二题是在第一道题基础上的修改,所以思路有了,想清楚两道题的不同点后,比较快速的做出来。

原文地址:https://www.cnblogs.com/666AAAA/p/11670987.html

时间: 2024-10-08 22:17:35

对分治法思想的体会 & 结对编程情况汇报的相关文章

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

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

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

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

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

一.对二分法思想的理解 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每进行比较,待搜索的数据

对分治法思想的体会

分治法的基本思想是什么? 分治法的设计思想是,将一个难以直接解决的大问题,分割成一些规模较小的相同问题,以便各个击破,分而治之. 更准确地说是,将规模为n的问题分解为k个规模较小的子问题,这些子问题相互独立且与原问题相同.递归地解决子问题,然后将解合并得到原问题的解. 什么情况下使用分治法? 分治法所能解决的问题一般具有以下几个特征: 1) 该问题的规模缩小到一定的程度就可以容易地解决: 2) 该问题可以分解为若干个规模较小的与原问题相同的问题: 3) 利用该问题分解出的子问题的解可以合并为该问

分治法思想与体会

分治,即分而治之,是将一个规模为n的问题分解为k个规模较小的子问题,这些子问题互相独立且与原问题相同.递归地解决这些子问题,然后将各子问题的解合并得到原文题的解.其算法设计模式如下: divide-and-conquer(P){ if (|P|<=n0) adhoc(P); divide P into smaller subinstances P1,P2,...,Pk; for (i=1; i<=k; i++) yi = divide-and-conquer(Pi); return merge

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

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

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

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

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

第二章总结 1.递归 1.1递归是什么:递归是自己定义自己,直接或间接地调用自己的算法. 1.2递归常见类型:多变元递归.多步递归.嵌套递归.联立递归. 1.3优点:可读性强,结构清晰,为调试提供很大便利: 缺点:运行效率较低,空间复杂度和时间复杂度都耗费比较大. 2.分治 2.1分治是什么:把一个问题分成若干个相同的子问题,对子问题进行求解. 2.2.分治思想三个阶段:一个较大问题划分为多个子问题.求解子问题.合并子问题的解,形成原始问题的解. 2.3时间复杂度:当 n = 1 时,T(n)

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

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