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

一. 二分法思想

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;
}

二. 结对编程情况

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

猜你喜欢

转载自www.cnblogs.com/Ygrittee/p/9812186.html