私は配列を線形に索引付けできるが、フードの下に複数の配列を使用して実装されている、Cでの高性能な待機のないベクトル実装をC言語で実装しています。今私はこのベクトルをソートする必要があります。明らかに、私は配列が単一のブロブのメモリではないので、qsort()
標準関数を使うことはできません。クイックソートを複数のアレイで使用できますか?
それはこのように実装されていないが、60スロットベクトルは次のように定義されたことをふり:私は(たとえば59の範囲0で指定されたインデックスの値を変えることができ、簡単なインライン関数を有する
struct vector {
int *buckets[4];
};
struct vector v;
v.buckets[0] = calloc(4, sizeof (int));
v.buckets[1] = calloc(8, sizeof (int));
v.buckets[2] = calloc(16, sizeof (int));
v.buckets[3] = calloc(32, sizeof (int));
getval(8)
は、ベクターがは、それが直線的にを保存ないが、直線をインデックス化することもできる。することができますクイックソートbuckets[1][4]
とgetval(9)
は、だから、など
をbuckets[1][5]
を返します返しますこのベクトルをソートするようになっていますか?そうでなければ、他のソートアルゴリズムを見てください。
実装を使用するクイックソートを自分でコーディングする必要があります。 qsortは連続したデータでのみ動作します。 – Stargateur
はい、質問の正確な点を参照しました。私は自分のクイックソートをコード化しなければならないことを知っています、質問はそれが適切なアルゴリズムかどうかです。 – Kean
実装のための実際の定義とAPIを投稿できますか?詳細に応じて、いくつかのソートアルゴリズムが他よりも適切かもしれません。整数配列の場合、基数ソートは非常に効率的です。 – chqrlie