このディレクトリの索引

http://pc12.2ch.net/test/read.cgi/tech/1255709298/449
#  [1] 授業単元:C++実習2 
#  [2] 問題文(含コード&リンク): 
#  -関数テンプレート- 
#  配列へのポインタと要素数を渡すと昇順にソートする関数を作成せよ。  
#  但し,関数テンプレートにより作成すること。想定する配列の型は文字列以外とする。  
#  ソートのアルゴリズムはバブルソート(単純交換法)とする。また,関数をテストする適切なmain関数も作成し提出すること。  
#  関数名前名は b_sort とし,第1引数は配列へのポインタ, 第2引数はint型で配列の要素数, 戻値は無しとする。  

昇順挿入整列(_ならび,_昇順に整列したならび) :-
    昇順挿入整列(_ならび,[],_昇順に整列したならび).

昇順挿入整列([],L,L).
昇順挿入整列([A|R1],L1,L) :-
    昇順整列状態を保って挿入する(A,L1,L2),
    昇順挿入整列(R1,L2,L).

昇順整列状態を保って挿入する(_挿入要素,L1,L2) :-
    append(L3,L4,L1),
    append(L3,[_挿入要素|L4],L2),
    すべての要素が小さい(L3,_挿入要素),
    すべての要素が大きいか等しい(L4,_挿入要素).

すべての要素が大きい([],_).
すべての要素が大きい([A|R],B) :- A @> B,すべての要素が大きい(R,B).

すべての要素が小さい([],_).
すべての要素が小さい([A|R],B) :- A @< B,すべての要素が小さい(R,B).

すべての要素が小さいか等しい([],_).
すべての要素が小さいか等しい([A|R],B) :- A @=< B,すべての要素が小さいか等しい(R,B). 

すべての要素が大きいか等しい([],_).
すべての要素が大きいか等しい([A|R],B) :- A @>= B,すべての要素が大きいか等しい(R,B).