このディレクトリの索引
http://toro.2ch.net/test/read.cgi/tech/1349527750/95
#  [1] 授業単元:C言語 配列 
#  [2] 問題文(含コード&リンク):入力された10個の整数データをバブルソートで昇順に整列せよ 
#  

入力された10個の整数データをバブルソートで昇順に整列する(_昇順に整列されたデータ) :-
        入力された10個の整数データを(_10個の整数データ),
        バブルソートで昇順に整列する(_10個の整数データ,_昇順に整列されたデータ).


'入力された10個の整数データを'(_10個の整数データ) :-
        length(_10個の整数データ,10),
        findall(_整数データ,(
                    member(_整数データ,_10個の整数データ),
                    整数を得る(整数データ,_整数データ)),
                _10個の整数データ).

バブルソートで昇順に整列する(_10個の整数データ,_昇順に整列されたデータ) :-
        バブルソート(_10個の整数データ,_昇順に整列されたデータ).

バブルソート(L1,L2) :-
        軽い泡はちょっと浮き上がる(L1,L3),
        泡が浮き上がったら最初からやり直す(L3,L2).
バブルソート(L,L) :-
        浮き上がる泡がなくなったらバブルソート終了.

軽い泡はちょっと浮き上がる(L1,L3) :-
        append(L0,[_重い泡,_軽い泡|R],L1),
        _重い泡 @> _軽い泡,
        append(L0,[_軽い泡,_重い泡|R],L3).

泡が浮き上がったら最初からやり直す(L3,L2) :-
        バブルソート(L3,L2).

浮き上がる泡がなくなったらバブルソート終了.