我有一个对象,其中包含三个变量:源顶点、目标顶点和长度。我有一个快速排序算法,可以按对象的长度对对象进行排序。但是,我想要这样,如果我比较两个对象并且它们的长度相等,那么我的快速排序会将具有较小源顶点的对象排在具有较大源顶点的对象之前。如果它们也相等,我想比较目标顶点。我想用较小的源顶点对较大的目标顶点进行排序。这一切都将在一个数组中完成。下面是我的快速排序实现。请注意, 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);
}
如果长度相等,可能有人知道如何/在哪里执行顶点的排序?谢谢!