zoukankan      html  css  js  c++  java
  • 对二分法的理解以及结对编程情况

    一. 二分法思想

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

    二. 结对编程情况

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

  • 相关阅读:
    Swift
    ios高质量博客
    Swift
    UML建模
    Swift
    Swift
    IIS建立.net framework4 应用程序池HTTP 错误 500.21
    zz entity framework vs linq to sql
    zz部署wcf iis
    zzIIS站点中部署WCF项目
  • 原文地址:https://www.cnblogs.com/Ygrittee/p/9812186.html
Copyright © 2011-2022 走看看