2011-10-25 9 views
1

私は、Cライブラリ関数qsortを使用して、一群の整数キーをソートしています。どのようなアイデア、提案、私はどのように整数値キーが任意の関連値を持つことができるキーと値のペアをソートするためにそれを拡張することができますか?ありがとう!qsort with key value pairs

答えて

1

struct { int key; void *value; }を使用して比較する機能を使用しますか?

4

(固定サイズの)構造体の配列を使用し、独自の比較関数を提供します。

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

実際の回答を探している人の便宜のために投稿されています。

関連する問題