スレッドセーフに関心がある場合は、スキップリストも可能です。スキップリストはリバランスを必要とせず、スキップリストも本質的にBSTのようにソートされるため、バランスの取れた二分探索木はスキップリストよりもパフォーマンスが低下します。必要なメモリの量には不利な点がありますが (技術的には複数のリンクされたリストが使用されるため)、理論的にはうまく収まります。
スキップ リストの詳細については、このチュートリアルを参照してください。
要素の数が非常に多い場合は、二重リンク リストを使用して、すべての項目が挿入された後にリストを並べ替えることも検討してください。これには、実装と挿入時間の容易さという利点があります。
次に、並べ替えアルゴリズムを実装する必要があります。選択ソートまたは挿入ソートは、マージソート、ヒープソート、またはクイックソート アルゴリズムよりも低速ですが、実装が簡単です。一方、後者の 3 つの実装もそれほど難しくありません。注意すべき唯一のことは、これらのアルゴリズムは通常再帰を使用して実装されるため、スタックをオーバーフローさせないことです。独自のスタック実装を作成し (難しくありません)、必要に応じて値をスタックにプッシュおよびポップして、それらを繰り返し実装することができます。私が言及しているものの例については、反復クイックソートを参照してください。