对二分法的理解和结对编程情况
1.对二分算法的理解:
先对元素进行升序排列,利用它们间的次序关系,可在最坏情况下用O(logn)(2为底) 时间完成搜索任务。
基本思想:将n个元素分成大致相同的两半,取中间元素作为比较比较对象,若给定值与中间元素的关键字相等,则查找成功;若给定值小于中间元素的关键字,则在左半区继续查找;若中间元素的给定值大于中间元素的关键字,则在中间元素的右半区继续查找。不断重复上述查找过程,直到查找成功,或所查找的区域无数据元素,查找失败。
非递归,while循环(书上的内容)
public int Binary_Search(int[] a,int x){ int left,right,middle; left = 0; right = a.length-1; while(left<=right){ middle = (left+right)/2; if(x==a[middle]){ return middle; } else if(x<a[middle]){ right = middle-1; } else { left = middle+1; } } return -1; } }
递归:
public int Binary_Search(int[] a,int x,int left,int right){ if(left<=right){ int middle = (left+right)/2; if(x==a[middle]){ return middle; } else if(x<a[middle]){ return Binary_Search(a,x,left,middle-1); } else { return Binary_Search(a,x,middle+1,right); } } else return -1; } }
while循环的时间复杂度更优
2.结对编程情况汇报
跟同学一起编程,能促进我们相互合作,学习。每个人的思考方向和代码风格都不一样,通过一起讨论,分析问题,发现不足,解决问题,更有利于我们培养团队合作能力。而且也让我明白了代码规范的重要性,代码没有条理,别人很难看懂。