二分法思想與結對程式設計
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.結對程式設計:
在與我的搭檔的互相協作下,我們對演算法又有了進一步的理解。在結對程式設計的過程中,我們能夠發現對方的錯誤並努力糾正,學會尋找改進演算法的方法,使得演算法更加高效,更加優化。通過結對程式設計,我們兩人的友誼更深了,程式設計能力也有了一定的提高,相信在本學期的互相學習中,我們都能有所收穫,有所提升。