からを決定する単純なアルゴリズム:BA
以下のための、の値を決定それぞれ比較することにより、するための
及びそれら満たすことがカウント。k=1,…,nB(k)A(i)A(k)i=1,…,kA(i)<A(k)
このアルゴリズムは、を他のすべてと比較し(回)、を他のと比較します。したがって、比較の総数は。しかし、それは私たちにできる最善のことではありません。たとえば、を見ると、比較を行う必要はありません。、これが最初の自然数であり、(順列に関係なく)小さい自然数が存在することが保証されているためです。どの程度?からをチェック代わりに、単にチェックことができます。あれは:A(1)n−1A(2)n−2(n−1)(n−2)2B(n)B(n)=A(n)−1 nn−1B(n−1)A(1)A(n−2)A(n)
以下のために、上記のアルゴリズムを使用します。以下のための
逆のアルゴリズムを使用しますかを決定最初にそれを設定することにより、、次に減算各エントリのためののために未満です。k=1,…,n2k=n2,…,nB(k)A(n)−11A(i)i=k+1,…,nA(k)
これにはステップ、これはまだです。また、からを構築ときに、場合、となることに注意してください。2×(n2−1)(n2−2)2=(n−2)(n−4)4O(n2)ABB(n)=A(n)−1A(n)=B(n)+1
しかし、今はもっと巧妙に。スペースを追加したり、インプレースで並べ替えたりできる場合は、比較しながら数値を並べ替えることができます。例:
∣∣∣∣ASB8904803701407332219166655∣∣∣∣
それらすべてをチェックする(または順番にチェックする)代わりに、バイナリ検索を使用して各を決定することができます。ただし、ソートにはまだ時間がかかります。O (n log n )B(k)O(nlogn)