ヒープソートアルゴリズムによって行われた比較の回数を数えようとしています。 私のコードは優先順位キューに基づいており、私はどこにカウンタを置くべきかを知りたい。ここに私が持っているものがありますが、カウンターを印刷しようとするとゼロカウントが表示されますが、何が間違っていますか?ありがとうございました。ここヒープソートで行われた比較の回数を数える
heapbuild機能である:
#include<iostream>
vector<int> pq_keys;
void buildHeap()
{
int size = pq_keys.size();
int midIdx = (size -2)/2;
while (midIdx >= 0)
{
shiftRight(midIdx, size-1);
--midIdx;
}
、これは比較行う関数です:
int shiftRight(int low, int high)
{
int root = low;
int counter=0;
while ((root*2)+1 <= high)
{
int leftChild = (root * 2) + 1;
int rightChild = leftChild + 1;
int swapIdx = root;
if (pq_keys[swapIdx] < pq_keys[leftChild])
{
counter++;
cout<<counter;
swapIdx = leftChild;
}
/*If right child exists check if it is less than current root*/
if ((rightChild <= high) && (pq_keys[swapIdx] < pq_keys[rightChild]))
{
counter++;
swapIdx = rightChild;
}
/*Make the biggest element of root, left and right child the root*/
if (swapIdx != root)
{
counter++;
int tmp = pq_keys[root];
pq_keys[root] = pq_keys[swapIdx];
pq_keys[swapIdx] = tmp;
root = swapIdx;
}
else
{
break;
}
}
return counter;
}
[MCVE]を入力してください。 –
リンクをありがとうが、私は2つの関数、実際に整数を比較してそれらをソートする関数を呼び出す主な関数を投稿しただけです。だから私は本当にそれをもっと見やすくするために私の質問にどのような変更を加えることができるのか分かりません。 – farah