为明天的期中考试而学习,而这些时间复杂性让我很挣扎。我将回顾书中的简单示例,并针对此示例
交换排序
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 排序的“每个案例时间复杂度”,我理解我们几乎分析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)
等等,我想......
有人可以用外行的话向我解释一下,这样我明天的期中考试就可以想出这样的答案吗?