0
私は以下のコードを持っています。再発の関係はどのようなものであり、その複雑さは何か。置換方法を使って再帰関係を解くことで複雑さを見いだすことができれば本当にうれしいです。複数の戻りを格納するmin-maxアルゴリズムの複雑さ
ノード変数は、指定された配列
struct node partition(int a[], int first, int last)
{
int MAX, MIN;
int low = first;
int high = last;
struct node left, right;
/*If there is a single variable */
if (low==high)
{
NODE.MAXX = a[low];
NODE.MINN = a[low];
return(NODE);
}
/*If there exists only 2 elements*/
else if (high==low+1)
{
if (a[high]>a[low])
{
NODE.MAXX = a[high];
NODE.MINN = a[low];
}
else
{
NODE.MAXX = a[low];
NODE.MINN = a[high];
}
return NODE;
}
/*If there exists more than 2 elements */
int mid = (low + high)/2;
left=partition(a, low, mid);
right=partition(a, mid+1, high);
if (left.MAXX > right.MAXX)
NODE.MAXX = left.MAXX;
else
NODE.MAXX = right.MAXX;
if (left.MINN < right.MINN)
NODE.MINN = left.MINN;
else
NODE.MINN = right.MINN;
return NODE;
}
メイン関数
int _tmain(int argc, _TCHAR* argv[])
{
struct node N;
int a[] = { 70, 50, 111, 69, 4, 7, 80, 100 };
N=partition(a, 0, 7);
cout << "Maximum = " << N.MAXX << endl;
cout << "Minimum = " << N.MINN << endl;
}
あなたは、上記の式と拡張し、それはO(n)があることを証明するていただけますか? – Navdeep
@Navdeep更新されました – meowgoesthedog
毎回Cが追加されると思います...親切にチェックしてください.... k番目のステップではCkでなければなりません。 – Navdeep