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

双方向性のあるQuicksort([],[]).
双方向性のあるQuicksort(L1,L2) :-
        最初にL1とL2の要素数を揃える(L1,L2),!,
        append(L0,[A|R0],L1),
        ( \+(var(A)), ! ; true ),
        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).