長さ5の配列に対して次の並べ替えアルゴリズムを実行しました。
int myarray[5] = {2,4,3,5,1};
int i;
for (i = 0; i < 5; i++)
{
printf("%d", myarray[i]);
int j;
for (j=i+1; j < 5; j++)
{
int tmp = myarray[i];
if (myarray[i] > myarray[j]) {
tmp = myarray[i];
myarray[i] = myarray[j];
myarray[j] = tmp;
}
}
}
この並べ替えアルゴリズムの複雑さは、O(n*n)
要素ごとに他の要素と比較するためだと思います。ただし、外側のループで作成するたびに、残りのすべてと比較するのではなく、残りの部分と比較することにも気付きます-i。複雑さは何でしょうか?