对二分法的理解以及结对编程情况
Posted ygrittee
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了对二分法的理解以及结对编程情况相关的知识,希望对你有一定的参考价值。
一. 二分法思想
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;
}
二. 结对编程情况
以前也没有结对编程过,此次结对编程,我发现两个人一起可以提供更多的思路,并且一个人敲代码,一个人纠正并且完善代码的规范性。两个人也可以在编程的过程中共同进步,交流想法。可能有时候会出现两个人思路不同风格不同的情况,这样可以帮助两个人更好的拓展另一个思路,了解对方对某一个题目的理解,以及对方的编程思想。
以上是关于对二分法的理解以及结对编程情况的主要内容,如果未能解决你的问题,请参考以下文章