quicksort([],[]).
quicksort([A|B],C) :-
partition(B,A,B1,B2),
quicksort(B1,C1),
quicksort(B2,C2);
append(C1,[A|C2],C).
partition([],_,[],[]).
partition([D|B],A,[D|B1],B2) :-
D < A,
partition(B,A,B1,B2).
partition([D|B],B1,[D|B2]) :-
D >= A,
partition(D,A,B1,B2).
このプログラムがどのように動いているのか、
よくわかりません。誰か、どう処理しているのか教えてください。
No.4ベストアンサー
- 回答日時:
No.3です。
昨夜回答した後一晩経っても違和感が消えず、見直してみました。
このプログラムはMLではなくてPrologですね。
その点以外はNo.3で書いた内容の修正はありません。
> この3つの部分が具体的に何をしているのか
> 分からないです。
> quicksort([A|B],C) :-
quicksort()という述語を定義する。:- の後ろ、ピリオドまでがquicksort()の本体部。本体部でquicksort()を参照する再帰的定義になっている。
quicksort(B2,C2)の後ろのセミコロンはコロンが正しいはず。
> partition(B,A,B1,B2),
リストBの内容をB1とB2に分ける。B1の要素はA未満の値、B2の要素はA以上の値。
ただし、No.3でも書いたとおりpartition()の定義が間違っている。
> append(C1,[A|C2],C).
リストC1とリスト[A|C2]を連結したものをCとする。
参考URL:http://ja.wikipedia.org/wiki/Prolog
二回も回答ありがとうごいます。
Prologで調べて見ると同じようなプログラムを発見できました。
MLの説明に載っていたので、まさかMLでなくPrologだと思いませんでした。
助かりました。
No.3
- 回答日時:
久しくMLのコードを書いていないのでうろ覚えで書きます。
partition(W, X, Y, Z)は「リストWを、X未満の値からなるリストYとX以上の値からなるリストZに分割する」という意味になるのだと想像できますが、一番下に書かれている3引数のpartition()の定義が謎ですね。きっと書き写し間違いなのでしょうけれど。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Excel(エクセル) Google Spreadsheetのカスタム表示形式について 2 2023/05/20 09:10
- Excel(エクセル) セルの計算の上限値を設定し、残りを別のセルに表示させる 7 2022/06/17 13:12
- 統計学 個別の期待値は小さいけど集計すると期待値は大きくなる場合とは? 4 2022/06/14 08:27
- Excel(エクセル) EXCEL 行内のデータを2行に分けて、表を作り直したいのです。教えてください。 5 2023/06/25 14:00
- Excel(エクセル) エクセルの条件付き書式 2 2022/05/09 11:15
- Excel(エクセル) スプレッドシートについて A1÷B1の値をC1に、A2÷B2をC2、A3÷B3をC3…といった感じで 1 2022/05/17 20:24
- 数学 高校物理 相対速度の式について 5 2022/05/11 00:14
- Excel(エクセル) エクセルの計算で 4 2022/12/13 16:49
- Excel(エクセル) 至急です><Excelの関数を教えてください。 2 2022/03/22 17:56
- その他(コンピューター・テクノロジー) パリティビットの検出・訂正について 2 2022/07/09 12:35
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
c言語
-
五目並べ
-
繰り返し1行~28行までを順順に...
-
H8マイコン C言語でのプロ...
-
MATLABにおける行の挿入方法
-
アセンブラの間接アドレッシング
-
!(否定)演算子について
-
パイソンのプログラミングにつ...
-
MATLABのfor文の使い方について
-
Excel・Word リサーチ機能を無...
-
UserForm1.Showでエラーになり...
-
エクセルで特定の列が0表示の場...
-
Excel マクロ VBA プロシー...
-
特定のPCだけ動作しないVBAマク...
-
合計3TBのデータのハッシュ値を...
-
String""から型'Double'への変...
-
メッセージボックスのOKボタ...
-
教えて下さい
-
EXCELのVBAでRange("A1:C4")を...
-
ExcelのVBA。public変数の値が...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
繰り返し1行~28行までを順順に...
-
c言語
-
MATLABにおける行の挿入方法
-
H8マイコン C言語でのプロ...
-
C言語で余りがマイナスになる場合
-
!(否定)演算子について
-
フォートランで行列の計算
-
パイソンのプログラミングにつ...
-
cのプログラミングで虚数を含...
-
ダイナミックプログラミング
-
StandardMLで整数リストの奇数...
-
一般次元の逆行列を求めるプロ...
-
MATLABの参考書
-
Pythonの公式リファレンスガイド
-
MATLABからCへ
-
MATLABのfor文の使い方について
-
OPENCVを使ったエピポーラ幾何...
-
Excel・Word リサーチ機能を無...
-
特定のPCだけ動作しないVBAマク...
-
配列数式の解除
おすすめ情報