明日の中間試験に向けて勉強していますが、これらの時間の複雑さに苦労しています。本の簡単な例と、この例について説明します
交換ソート
void exchangesort (int n, keytype S[])
{
index i, j;
for(i=1; i<=n-1; i++)
for(j=i+1; j<=n; j++)
if(S[j] < S[i])
exchange S[i] and S[j];
}
この Exchange の並べ替えの「Every-Case Time Complexity」についてj
は、基本的な操作 (交換) があるため、for ループを分析する部分がほとんど理解できます。したがって、パスの総数をリストすると、次のようになります。
T(n) = (n-1) + (n-2) + (n-3) + ... + 1 = (n-1)n/2
今私の質問は... 1 はどこから来たのですか? だと思いましたn-1 + n-2 +... + n
。
さらに、私が本当に理解していないのは、(n-1)n/2
.
それは明らかに私が中期的に考え出さなければならないものであり、それを見ると、直感的には思い浮かびません..など(n-1)n/2
を思いつく方法を理解しています.T(n) = (n-1) + (n-2)
明日の中間試験でこのような答えを思いつくことができるように、誰かがこれを素人の言葉で説明してもらえますか?