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

一. 二分法思想

1. 要求

二分法要求线性表必须采用顺序存储结构,表中元素要按关键字有序排列。

2. 时间复杂度及分析体会

最好情况:1次

最坏情况:O(log n)

这种算法是一种典型的分治的策略,并且这种算法很利于理解,它利用了元素之间的次序关系。相对顺序查找这种方法的效率较高,它能在大多数的情况,例如数据量很大,并且有序的时候,实现更快的数据查找功能,也是比较常用且易于想到的一种算法实现。

3. 代码

#include <iostream>using namespace std;int main(){ int n,x; cin >> n; if(1<=n<=100){  int shuzu[n];  for(int i=0;i<n;i++){      cin >> shuzu[i];   }  cin >> x;  int left = 0;  int right = n-1;  int num = 0;  while(left<=right){   num++;   int mid = (left+right)/2;   if(x==shuzu[mid]){    cout << mid << endl;       cout << num << endl;       return 0;   }   else if(x < shuzu[mid]){       right = mid - 1;   }      else if(x > shuzu[mid]){     left =  mid+1;   }       }  cout << "-1"<<endl;  cout << num << endl; } return 0;}

二. 结对编程情况

以前也没有结对编程过,此次结对编程,我发现两个人一起可以提供更多的思路,并且一个人敲代码,一个人纠正并且完善代码的规范性。两个人也可以在编程的过程中共同进步,交流想法。可能有时候会出现两个人思路不同风格不同的情况,这样可以帮助两个人更好的拓展另一个思路,了解对方对某一个题目的理解,以及对方的编程思想。

原文地址:https://www.cnblogs.com/Ygrittee/p/9812186.html

时间: 2024-10-08 22:18:19

对二分法的理解以及结对编程情况的相关文章

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

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

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

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

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

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

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

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

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

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

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

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

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

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

对二分思想的理解及结对编程

一.对二分法思想的体会 1.二分法是运用分治策略的典型例子,也称折半查找,充分利用了元素间的次序关系,是一种效率较高的查找方法.实现二分算法有递归和非递归两种方式. 2.基本思想:将n个元素分成大致相同的两半,取a[n/2]与x作比较.如果x=a[n/2],则找到x,算法终止:如果a<[n/2],则只在数组a的左半部分继续搜索x:如果x>a[n/2],则只在数组的右半部分继续搜索x. 3.代码实现: int BinarySearch(Type a[],const Type&x,int

对二分法的学习体会以及关于结对编程的体验分享

1) 二分搜索技术 二分搜索算法是运用分治策略的典型例子.二分搜索方法充分利用了元素间的次序关系,采用分治策略,可在最坏的情况下用O(logn)时间完成搜索任务. 问题描述:给定已排好序的n个元素a[0: n-1],现要在这n个元素中找出特定的元素x. 解决方法: a) 顺序搜索方法:逐个比较a[0: n-1]中元素,直至找出元素或搜索整个数组后确定x不在其中.该方法没有很好地利用n个元素已排好序这个条件,因此在最坏的情况下,顺序搜索方法需要O(n) 次比较. b) 二分搜索方法:将n个元素分成