1.二分法思想:
二分搜索算法是运用分治策略的典型例子。二分搜索算法的基本思想是将n个元素分成个数大致相同的两半,取a[n/2]与x作比较。如果x=a[n/2],则找到x,算法终止;如果x<a[n/2],则只在数组a的左半部继续搜索x;如果x>a[n/2],则只在数组a的右半部继续搜索x。通过二分搜索算法,在搜索时不需要从头到尾逐一对数组中的元素进行比较,大大提高了效率,节省了时间,最坏情况下时间复杂度为O(logn)。
递归算法代码:
int Search(int x,int left,int right,int a[])
{
if(left>right) return -1;
else
{
int middle=(left+right)/2;
count++;
if(x==a[middle]) return middle;
if(x>a[middle]) return Search(x,middle+1,right,a);
if(x<a[middle]) return Search(x,left,middle-1,a);
}
}
非递归算法代码:
int Search(int x,int left,int right,int a[])
{
while(left<=right)
{
count++;
int middle=(left+right)/2;
if(x==a[middle]) return middle;
if(x>a[middle])
left=middle+1;
if(x<a[middle])
right=middle-1;
}
return -1;
}
2.结对编程:
在与我的搭档的互相协作下,我们对算法又有了进一步的理解。在结对编程的过程中,我们能够发现对方的错误并努力纠正,学会寻找改进算法的方法,使得算法更加高效,更加优化。通过结对编程,我们两人的友谊更深了,编程能力也有了一定的提高,相信在本学期的互相学习中,我们都能有所收获,有所提升。
原文地址:https://www.cnblogs.com/yilun578663140/p/9824397.html