以下は私が書いた疑似コードで、配列 A と整数値 k を指定すると、A に合計が k になる 2 つの異なる整数がある場合は true を返し、それ以外の場合は false を返します。このアルゴリズムの時間の複雑さを判断しようとしています。
最悪の場合のこのアルゴリズムの複雑さは O(n^2) であると推測しています。これは、最初の for ループが n 回実行され、このループ内の for ループも n 回実行されるためです。if ステートメントは 1 つの比較を行い、true の場合は値を返します。これはどちらも一定時間の操作です。最後の return ステートメントも一定時間の操作です。
私の推測は正しいですか?私はアルゴリズムと複雑さに慣れていないので、どこかで間違っていたら訂正してください!
Algorithm ArraySum(A, n, k)
for (i=0, i<n, i++)
for (j=i+1, j<n, j++)
if (A[i]+A[j]=k)
return true
return false