qsort с парами ключ-значение

#c #qsort

#c #qsort

Вопрос:

Я использую библиотечную функцию C qsort для сортировки набора целочисленных ключей. Любые идеи, предложения, указатели на то, как я могу расширить его для сортировки пар ключ-значение, где целочисленные ключи могут иметь любое связанное значение? Спасибо!

Ответ №1:

Используйте массив структур (фиксированного размера) и предоставляйте свои собственные функции сравнения.

Ответ №2:

Использовать struct { int key; void *value; } и функцию, которая выполняет сравнение?

Ответ №3:

 //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;
            }
        }
    }
}
 

Опубликовано для удобства всех, кто ищет реальный ответ.