#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;
}
}
}
}
Опубликовано для удобства всех, кто ищет реальный ответ.