并行高性能计算——递归查找最大值
#include<iostream> using namespace std; int maxi(int A[],int low,int high){ if(low==high) return A[low]; int low_max=maxi(A,low,(low+high)/2); int high_max=maxi(A,(low+high)/2+1,high); if(low_max>high_max) return low_max; else return high_max; } int main(){ int A[]={5,10,9,7,2,13,8}; int low=0; int high=6; int max=maxi(A,0,6); cout<<max<<endl; return 0; }
时间复杂度:T(n)=2T(n/2)+c=4T(n/4)+2c+c=...=2lgnT(n/2lgn)+c(20+21+...+2lgn-1)=nT(1)+c(1-2lgn)/(1-2)=n+c(n-1)=θ(n)