配列がa1、a2、...、ak、_、a(k + 1)、...、anで与えられているとします。 アンダースコア(_)は空白を表します。配列要素をこの空間に移動できます。この操作を何回でも繰り返すことができます。 1つの空白スペースですべての配列をソートすることは可能ですか?1つの一時変数/スペースを使用して配列をソートすることはできますか?
1
A
答えて
4
はい、可能です。
ソートされた配列は、その配列の特定の順列に過ぎません。
個々のスワップ順に並べ替えることができます。
スワップは、単一の一時要素で実装できます。
(実際には、の配列を、XOR演算を使用してを一時的にソートすることは可能です)。
0
インプレースソートにはいくつかのアルゴリズムがあります。最も顕著なのはクイックソートの非再帰バージョンです(再帰バージョンは再帰呼び出しの数に比例してスタック上の領域を占有するため)。平均してO(n log n)の複雑さが与えられます。
もう1つの可能性は、コンパイル性がO(n^2)である挿入ソートやバブルソートなど、効率の悪いアルゴリズムを使用することです。
あなたの特定の質問については、その特定のスペースを使用することですが、あなたはBathshebaのように交換することができますが、私はこの種の操作を行う時間を失うことはありません。
配列の途中に明示的に "未使用領域"という概念がある場合は、その意味論、つまり順序付けの正しい配置が何であるかを理解するようにしてください。あなたがいなくて、どこにいてもそれを残してしまうと、あなたは "壊れた"不変式を見つけることになり、あなたのコレクションにバイナリ検索のようなアルゴリズムを実装するのが難しくなります。
0
私はこのようなコンテナを実際のコードで見たことはありませんが、実装する最も簡単なアルゴリズムは、空の最初の要素と交換し、コンテナは2番目の位置から始まり、最後の位置まで繰り返されます。最後の位置は空のスペースになります。この場合、スワップするだけで、空白を埋めることができ、他の位置を空にすることができます。
関連する問題
- 1. Jekyll CollectionとJekyll Dataを1つの配列でソートすることはできますか?
- 2. 配列内に1つの値として配列を持つことはできますか?
- 3. 一時変数を使用して配列内の値を操作する
- 4. オブジェクト配列の一時ソート
- 5. キーと数値の配列を使用して文字列を分割することはできますか?
- 6. 重要度を重みとして使用して配列の束を1つの配列にソート
- 7. 2つの配列をソートして、1つ下の配列の中で最も高い配列を得ます。
- 8. mvc配列のインデックスとしてjs変数を使用できますか?
- 9. SSRSで変数と列を同時に1つのデータセットで使用する方法はありますか?
- 10. Cassandraの列は、ノードを1つだけ使用してソートされますか?
- 11. 2次元番号を1つの数値にエンコードしてソートすることはできますか?
- 12. SQLを使用して1つの行/列に配列を入れることは可能ですか?
- 13. VBA変数として複数列のコンボボックスから1つの列を使用
- 14. XSLを使用してXMLファイルをソートすることはできますか?
- 15. アプリで1つのAndroid APKを使用してビルドバリアントを変更することはできますか?
- 16. 1つの配列をソートして別の配列にコピーする
- 17. 変数を使用するときに配列から値を引き出すことができません
- 18. イニシャライザリストを直接使用して、1つの配列だけを持つ構造体をメンバとして初期化することはできますか?
- 19. 別の配列をソートする方法に基づいて1つの配列をソートする方法は? (JavaScript)
- 20. 複数のテーブルに対して1つのsqoopジョブを同時に使用することができ、同時に実行することができます
- 21. linqを使用して配列の1つのフィールドを変更します
- 22. どうすればこの配列を取り、1つの配列にすることができますか?
- 23. Capistranoを使用して1つのRailsアプリを複数のサーバに同時に配備できますか?
- 24. 値/キーを使用して3つの配列を1つに変換する
- 25. Oracle SQL Developerで一時変数を1回使用する
- 26. 2次元配列をC++の1つの列でソートする
- 27. アンダースコアを使用して配列値を複数の値でフィルタリングすることはできますか?
- 28. サブ配列を投影して1つの配列として取り出すことは可能ですか?
- 29. ucharの配列を単一のucharとして使用できますか?
- 30. gaps []という別の配列を使用して配列をソートするアルゴリズム
ありがとうございます。私は、一時的でないスワップにXORを使ったバージョンがあることも知らない。 \t a = a^b; \t b = a^b; \t a = a^b; またはvia plus/minus: \t a = a + b; \t b = a-b; \t a = a-b; –