配列 A = <0, 15, 5, 1, 0, 20, 25, 30, 35, 40> があるとします。比較をカウントするコードを書くとき、カウンターをどこに追加するか混乱します。カウントが繰り返されるのではないかと心配しているからです。
それにもかかわらず、それは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;
}