2

たくさんの配列を渡すことを含むプロジェクトをリファクタリングしています。現在、配列を返す各メソッドは、配列を返す直前に配列を並べ替えます。これはいくつかの理由で理想的ではありません-重複したコードがたくさんあり、配列を2〜3回ソートするのは非効率的であり、新しい関数を書くのは簡単すぎますが、配列を返す前にソートするのを忘れます。

配列が常にアルファベット順に保持されることを保証する方法を探しています。私の現在の考えは、サブクラス化NSMutableArrayおよび/またはNSArrayアルファベット順の配列クラスを作成することです。配列を作成または変更して呼び出すすべてのメソッドをオーバーライドしてから、superそれ自体を並べ替える必要があります。

これは合理的に聞こえますか、それともより良いアプローチがありますか?

編集:パフォーマンスの問題が言及されているので、私のプロジェクトからの関連情報を含めます。速度は重要な問題ではありません。プロセス全体は数秒しかかからず、ツールは頻繁にしか使用されません。したがって、単純さと明白な正確さがより重要です。

また、アレイのユースケースは特定のものです。配列が返されると、呼び出し元は常に配列内のすべての要素に少なくとも1回はアクセスします。

4

2 に答える 2

4

バランスの取れたバイナリ ツリーは、アイテムを並べ替えるための標準的で効率的な方法です。プレーン配列でランダムアクセスを行うほとんどの方法は遅くなります。スキップ リストも効率的であり、配列クラスに機能を追加できる場合があります。

于 2010-10-05T18:44:49.283 に答える
3

CHDataStructuresを確認してください。これは、バランスの取れた二分木など、多くの自己ソート データ構造を持つフレームワークです。

于 2010-10-05T19:02:17.040 に答える