一. 二分法思想
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