私は実際に、並べ替えられた配列を持っているが、いくつかの数字が逆になっているという問題を解決しようとしています。例: 1 2 3 4 9 8 7 11 12 14
は配列です。
さて、私の最初の考えは、Binary Search
アルゴリズムを適用してPEAK ( a[i]>a[i+1] && a[i]>a[i-1])
ただし、必ずしも正しい結果が得られるとは限りません。さらに、リストはほとんどソートされているため、効率的ではない可能性があります。
次のインプレッション :Insertion Sort
リストがソートされているので適用し、挿入ソートはそのような場合に最適なパフォーマンスを発揮します。
誰でもより良い解決策を提案できますか、それとも私の解決策が正しいかどうか? 効率的または非効率的?
PS - これは宿題ではありません。
UPDATE : 挿入ソート (この場合は O(n)) または線形スキャンでサブシーケンスを見つけてから、それを逆にします (O(n))。最適化できる可能性はありますか? または、おそらく O(logn) で行いますか?