いいえ、それは不可能ですが、そうであれば私の仕事ははるかに簡単になります:)。
回避できない O(log n) 係数があります。時間または空間として受け取ることを選択できますが、それを回避する唯一の方法は、並べ替えないことです。O(log n) スペースを使用すると、うまく収まらなかった要素を隠した場所を追跡する継続のリストを作成できます。再帰を使用すると、これを O(1) ヒープに収まるようにすることができますが、それは代わりに O(log n) スタック フレームを使用することによってのみ可能です。
これは、1 から 9 までのオッズとイーブンをマージソートする進行状況です。定数空間と線形スワップの双子の制約によって引き起こされる順序の逆転を追跡するために、対数空間アカウンティングがどのように必要であるかに注意してください。
. -
135792468
. -
135792468
: .-
125793468
: .-
123795468
#.:-
123495768
:.-
123459768
.:-
123456798
.-
123456789
123456789
いくつかのデリケートな境界条件があり、二分探索よりも正しく取得するのがわずかに難しく、この (可能な) 形式であっても、悪い宿題の問題です。しかし、本当に良い頭の体操です。
更新
どうやら私は間違っているようで、O(n) 時間と O(1) スペースを提供するアルゴリズムがあります。私は自分自身を啓発するために論文をダウンロードしましたが、この回答は間違っているとして取り下げました。