int n = 0;
void downheap(int from,int to)
{
int i, j;
int val;
val = a[from];
i = from;
while (i <= to/2){
j = i*2;
if (j+1 <= to && a[j] > a[j+1])
j++;
if(val <= a[j])
break;
a[i] = a[j];
i = j;
}
a[i] = val;
}
void heapsort()
{
int i;
int tmp;
for (i = n/2; i >= 1; i--)
downheap(i,n);
for (i = n; i >= 2; i--){
tmp = a[1];
a[1] = a[i];
a[i] = tmp;
downheap(1, i-1);
}
}
比較回数と交換回数の表示
比較回数と交換回数の表示
ヒープソートで比較回数comp++;と交換回数swap++;の挿入場所が分からないです。いろいろな所に試しても、回数表示が0になります。
Re: 比較回数と交換回数の表示
比較回数は比較をしている部分に 交換回数は交換をしている部分に 挿入するのが自然でしょう。はく さんが書きました: ↑1年前ヒープソートで比較回数comp++;と交換回数swap++;の挿入場所が分からないです。
提示されていない部分にバグがあるかもしれません。はく さんが書きました: ↑1年前いろいろな所に試しても、回数表示が0になります。
複雑な問題?マシンの性能を上げてOpenMPで殴ればいい!(死亡フラグ)