من برای پیدا کردن ماکزیمم نسبی داخل یک آرایه ۱ بعدی این کد رو نوشتم درست هم کار می کنه
( ماکزیمم نسبی توی آرایه مثلا 16354 میشه 5 )
int findPeak(const int f,const int e,const vector<long long>& a)
{
unsigned int mid = (f+e)/2;
// cout<<f<<" "<<e<<"\n";
if(f==e)
{
return f;
}
if(a[mid-1] > a[mid])
{
findPeak(f,mid-1,a);
}
else if(a[mid+1]>a[mid])
{
findPeak(mid+1,e,a);
}
else
{
return mid;
}
}
این الگوریتمی که نوشتم از مرتبه nlogn هستش می خواستم بدونم میشه کاری کرد که با تغییر همین الگوریتم تمام نقاط ماکزیمم نسبی رو بدس آورد ؟
برای مثال 16354 --> ۶ ۵
و این که اگر بخوام این الگوریتم رو برای آرایه ۲ بعدی بنویسم چه کاری باید انجام بدم ؟
ممنون .