1. 程式人生 > >算法設計與分析第二章作業

算法設計與分析第二章作業

arc 最壞情況 int == 算法思想 同學 高效率 ret 執行

1、對二分法思想的體會:

二分搜索方法充分利用了元素間的次序關系,采用分治策略,其基本思想是將n個元素分成個數大致相同的兩半,取a[n/2]與x作比較。如果x=a[n/2],則找出x,算法終止;如果x<a[n/2],則只在數組a的左半部繼續搜索x;如果x>a[n/2],則只在數組a的右半部繼續搜索x。具體算法如下:

int BinarySearch(Type a[],const Type& x,int n){

//在a[0]<=a[1]<=...<=a[n-1]中搜索X

//找到x時返回其在數組中的位置,否則返回-1
int left=0; int right =n-1;
while(left<=right){
int mid = (left+right)/2;
if(x==a[mid]) return mid;
if(x>a[mid])left=mid+1;
else right=mid-1;
}
return -1;//未找到x
}

每執行一次while循環,待搜索數組的大小就減小一半。在最壞情況下,while循環被執行了O(logn)次。循環體內運算時間需要O(1)時間,因此二分算法在最壞情況下的計算時間復雜性為O(logn)。

2、結對編程情況匯報:

在結對編程中,我們先討論好,得出大概的算法思想,然後主要由我負責打代碼,然後另一個同學在旁邊看著,看到有錯的地方會提醒我改過來。調試出錯後,我們兩個一起找bug,不斷修改,直到程序通過。我覺得這樣,兩人合作編程,能有效提高效率。在聽同學的想法時,也能讓我找到自己平時解決問題時思考不足的地方,從而有利於提高自己的思考和編程能力。

算法設計與分析第二章作業