このディレクトリの索引
#  
#  @haroperiさんの20120420のツイートより
#  
#  双方向性のあるQuicksortが書けないので寝るです。だめだもうだめだ。 *喪中*
#  

双方向性のあるQuicksort([],[]).
双方向性のあるQuicksort(L1,L2) :-
        最初にL1とL2の要素数を揃える(L1,L2),!,
        append(L0,[A|R0],L1),
        append(L0,R0,L11),
        append(L5,[A|L6],L2),
        整列のための分割(A,L11,L3,L4),
        双方向性のあるQuicksort(L3,L5),
        双方向性のあるQuicksort(L4,L6).

整列のための分割(A,[],[],[]).
整列のための分割(A,[B|R1],[B|R2],L) :-
        B @< A,
        整列のための分割(A,R1,R2,L).
整列のための分割(A,[B|R1],L,[B|R2]) :-
        B @>= A,
        整列のための分割(A,R1,L,R2).

最初にL1とL2の要素数を揃える(L1,L2) :-
        length(L2,Len),
        length(L1,Len).

%  
%  現在のエラーは
%  普通のソートの時、複数解(同一解)出力されてしまう。
%  これを直すのは難しいだろう。
%