私は非常に単純なアルゴリズム分析を解決しようとしています(明らかに私にはそれほど単純ではありません)。
アルゴリズムは次のようになります。
int findIndexOfN(int A[], int n) {
// this algorithm looks for the value n in array with size of n.
// returns the index of n in case found, otherwise returns -1.
// it is possible that n doesn't appear in the array.
// n appears at most one time.
// the probability that n doesn't appear in the array is $1/(n+1)$
// for each cell in the array, the probability that n is found in index i
// is $1/(n+1)$
int index, fIndex;
index = 0;
fIndex = -1;
while (index < n && fIndex == -1) {
if(A[index] == n) {
fIndex = index;
}
index++;
}
return fIndex;
}
今、私は平均実行時間を計算しようとしています。これは等比数列だと思いますが、確率と複雑さという用語をマージする方法を見つけることができません。
たとえば、値nがインデックス1で見つかった場合、2番目のインデックス(1)を取得してnを見つけるには、1ループステップかかることがわかっています。
一方、確率は私にいくつかの分数を与えます....
これが私がこれまでに得たものです:
i=1からnまでの$\sigma評価((1 / n)*((n-1)/ n)^ i-1)
しかし、繰り返しになりますが、この式とT(n)の関係を見つけることができず、この関数のBigOh、BigOmega、またはThetaの関係も見つけることができません。