【发布时间】:2012-10-14 23:15:50
【问题描述】:
如果我有一个数组 A = 。当我编写代码来计算比较时,我对在哪里添加计数器感到困惑,因为我担心可能会重复计数。
尽管如此,它说有 15 个比较。我不确定这是否正确。真的有多少比较?
int InsertionSort(int A[], int n)
{
int i, j, index, counter = 0;
for (i=1; i < n; i++)
{
index = A[i];
for (j=i-1;j >= 0 && A[j] > index;j--)
{
A[j + 1] = A[j];
counter++;
}
A[j+1] = index;
counter++;
}
return counter;
}
int main()
{
int A[]= {5,4,3,2,1};
int counter = 0;
int n =5;
counter = InsertionSort(A, n);
printf("%d",counter);
return 0;
}
【问题讨论】:
-
你数过了。如果我告诉你 17 岁,你知道为什么吗?
-
我认为是对的。您计算了 for 循环内的两个比较,并添加了一个额外的“count++”来说明中断循环的回合。
-
请注意,代码中的数组是错误的,我是要分析A = 。