我想在C/C++中构建一个函数来对数组进行排序,并用它的“分数”或等级替换每个值。它接受一个双精度指针数组作为整数,并根据整数的解引用值对双精度指针进行排序。我已经尝试了很多次,以使其工作,但无法解决它。再次,它必须根据它们指向的值对双指针进行排序。这是我有:如何根据指向的值对双指针数组进行排序?
void SortArray(int ** pArray, int ArrayLength)
{
int i, j, flag = 1; // set flag to 1 to begin initial pass
int * temp; // holding variable orig with no *
for(i = 1; (i <= ArrayLength) && flag; i++)
{
flag = 0;
for (j = 0; j < (ArrayLength -1); j++)
{
if (*pArray[j+1] > *pArray[j]) // ascending order simply changes to <
{
temp = &pArray[j]; // swap elements
pArray[j] = &pArray[j+1];
pArray[j+1] = &temp;
flag = 1; // indicates that a swap occurred.
}
}
}
}
另请参阅http://stackoverflow.com/questions/5632832/sort-an-array-based-on-an-index-array-in-c其中我给出了两个例子。使用O(log(n))而不是O(N^2) – elcuco 2013-01-01 09:56:56