Lispでクイックソートをするのに問題があります。クイックソートのサブリストを修復する
私の目標は次のとおりです。
リストは0または1の要素が含まれている場合、それはすでにソートされています。それ以外の場合は、次のようにソートします。まず、リストの最初の要素であるピボットを取得します。次にリストの残りの部分を(DOLISTを使用して)調べ、各要素をピボットと比較します。要素がピボットより小さいか等しい場合は、それを左のサブリストに入れます。そうでない場合は、CONSまたはAPPENDを使用して右のサブリストに配置します。 Qsortを呼び出して左サブリストと右サブリストをソートします。最後に、左サブリスト、ピボット、および右サブリストを1つのソート済みリストに結合します。
これは私のコードです:
(defun qsort (x)
(if (>= 1 (length x))
(format t"~%~s is already sorted" x)
((let (pivot (first x))
(dolist (i x)
(if (>= pivot (nth i x))
(list y (nth i))
(list z (nth i))))
(appned y z)))))
まだ私はひどく
を取得することにより、壁にぶつかるように見えるが、ラムダを形成:(LET(PIVOT(FIRST X))(DOLIST(IXのPIVOT)コンパイラからのIF(> = PIVOT(NTH IX))(リストピボット(リスト)PIVOT(リスト)PIVOT(リストH))
お手伝いができたら幸いです。ありがとうございました。