【算法】第二章作业

1、请谈一下你对二分法思想的体会

分治法:将一个难以直接解决的大问题,分割成一些规模较小的相同问题,以便各个击破,分而治之。

分治实质是分解,再合而求之。

二分法一次源于数学领域,其主要应用在二分查找算法上,如二分搜索算法,它充分利用了元素间的次序关系,基本思想:将n个元素分成个数大致相同的两半:假设数据是按升序排序的,对于给定值key,从序列的中间位置k开始比较,

如果当前位置arr[k]值等于key,则查找成功;若key小于当前位置值arr[k],则在数列的前半段中查找,arr[low,mid-1];若key大于当前位置值arr[k],则在数列的后半段中继续查找arr[mid+1,high]

int bsearch(int array[], int low, int high, int target){

if (low > high) return -1;

(二分查找,首要条件是有执行对象,即是这个数组,元素)

int mid = (low + high)/2;

(分,从中间开始)

    if (array[mid]> target)

        return    binarysearch(array, low, mid -1, target);

(中间没查找成功,可先往左/往右)

    if (array[mid]< target)

        return    binarysearch(array, mid+1, high, target);  

    //if (midValue == target)

        return mid;

}

}  

二分查找算法的出现,使得对应算法的时间复杂度降低了,最坏也是O(logn),与顺序查找相比,它节约了很多时间。

2、结对编程情况汇报

结对编程,总的来说是交流与合作,互相集想法。和队友编程时,更能容易解决一些难题或者注意到一些细微的问题,队友会及时发现一些错误并纠正过来,一个问题一个人可能需要一分钟来解决,但是两个人的话,会有两种解决办法,或者可以在半分钟内解决好,这个编程过程中是有趣和充实的,而彼此也交流了自己想法,使得在编程过程中不那么枯燥,也会更加受益。

猜你喜欢

转载自www.cnblogs.com/Jergens/p/9768311.html