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

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.结对编程情况汇报

跟同学一起编程,能促进我们相互合作,学习。每个人的思考方向和代码风格都不一样,通过一起讨论,分析问题,发现不足,解决问题,更有利于我们培养团队合作能力。而且也让我明白了代码规范的重要性,代码没有条理,别人很难看懂。

posted @ 2018-10-21 21:35  lasia_LWL  阅读(199)  评论(0编辑  收藏  举报