gpt4 book ai didi

序言插入排序

转载 作者:行者123 更新时间:2023-12-01 01:14:44 26 4
gpt4 key购买 nike

有一个简单的 Prolog 插入排序算法:

sorting([A|B], Sorted) :- sorting(B, SortedTail), insert(A, SortedTail, Sorted).
sorting([], []).

insert(A, [B|C], [B|D]) :- A @> B, !, insert(A, C, D).
insert(A, C, [A|C]).

它在普通列表中表现良好:
?- sorting([5, 4, 9, 1, 3, 8], X).
X = [1, 3, 4, 5, 8, 9].

但我还需要对包含其中任何一个的列表子列表进行排序:
?- sorting([2, 5, [5, 4, 3], [6, 3], 4, 8], X).
X = [2, 4, 5, 8, [5, 4, 3], [6, 3]].

现在是什么返回。和
?- sorting([2, 5, [5, 4, 3], [6, 3], 4, 8], X).
X = [2, 4, 5, 8, [3, 4, 5], [3, 6]].

我需要返回什么。那么我该如何对子列表进行排序呢?提前致谢!

最佳答案

我提供了这个简单的解决方案:
在排序列表中插入元素

insert(X, [], [X]):- !.
insert(X, [X1|L1], [X, X1|L1]):- X=<X1, !.
insert(X, [X1|L1], [X1|L]):- insert(X, L1, L).
使用插入排序算法原理
insertionSort([], []):- !.
insertionSort([X|L], S):- insertionSort(L, S1), insert(X, S1, S).

关于序言插入排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12715293/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com