ソース頂点、デスティネーション頂点、長さの 3 つの変数を持つオブジェクトがあります。オブジェクトを長さでソートするクイックソートアルゴリズムがあります。ただし、2 つのオブジェクトを比較してそれらの長さが等しい場合、クイックソートで、ソース頂点が大きいオブジェクトの前にソース頂点が小さいオブジェクトが並べ替えられるようにしたいと考えています。それらも等しい場合は、宛先頂点を比較したいと思います。その前にある大きな宛先頂点を小さなソース頂点で並べ替えたいと思います。これはすべて配列で行われます。以下は私のクイックソートの実装です。e[i] は、頂点と長さを保持するオブジェクトであることに注意してください。
void quickSort(edge *e, int left, int right)
{
int i = left, j = right;
int temp, temp1, temp2;
while(i <= j)
{
while(e[i].getLength() < pivot)
i++;
while(e[j].getLength() > pivot)
j--;
if(i <= j)
{
temp = e[i].getLength();
temp1 = e[i].getEdgeSrc();
temp2 = e[i].getEdgeDes();
e[i].setLength(e[j].getLength());
e[i].setEdgeSrc(e[j].getEdgeSrc());
e[i].setEdgeDes(e[j].getEdgeDes());
e[j].setLength(temp);
e[j].setEdgeSrc(temp1);
e[j].setEdgeDes(temp2);
i++;
j--;
} //if statement
}///while loop
if(left < j)
quickSort(e, left, j);
if(i < right)
quickSort(e, i, right);
}
長さが等しい場合、頂点のソートを実行する方法/場所を誰かが知っているでしょうか? ありがとう!