2011-10-25 2 views
1

J'utilise la fonction de bibliothèque C qsort pour trier un groupe de clés entières. Des idées, des suggestions, des pointeurs sur comment je peux l'étendre pour trier des paires clé-valeur, où les clés entières peuvent avoir une valeur associée? Merci!qsort avec paires de valeurs clés

Répondre

1

Utilisez struct { int key; void *value; } et une fonction qui fait la comparaison?

4

Utilisez une matrice de structures (de taille fixe) et fournissez vos propres fonctions de comparaison.

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

Publié pour la commodité de quelqu'un d'autre qui cherche une réponse réelle.

Questions connexes