带键值对的qsort

时间:2011-10-25 14:08:47

标签: c qsort

我正在使用C库函数qsort对一堆整数键进行排序。有关如何扩展它以对键值对进行排序的任何想法,建议和指针,其中整数键可以具有任何关联值吗?谢谢!

3 个答案:

答案 0 :(得分:4)

使用(固定大小)结构数组,并提供自己的比较函数。

答案 1 :(得分:1)

使用struct { int key; void *value; }和进行比较的函数?

答案 2 :(得分:0)

//just quick sorting function (with key-index array to maintain identity)
//inefficient but works
void quicksort(int *values, int *keys, int count)
{
    bool bool_sorted = false;
    int temp;

    //check whether all keys are in the correct order
    while (bool_sorted == false)
    {
        bool_sorted = true;

        for (int i = 0; i < count-1; i++)
        {
            //if next value is lower
            if (values[i] > values[i+1])
            {
                //swap + key index
                temp = values[i];
                values[i] = values[i+1];
                values[i+1] = temp;

                temp = keys[i];
                keys[i] = keys[i+1];
                keys[i+1] = temp;

                bool_sorted = false;
            }
        }
    }
}

为方便其他寻找实际答案的人而发布。