我在Maxima中实现了冒泡排序方法:
burbuja(l) := block(
for i : 1 step 1 thru length(l) do (
for j : length(l) - 1 step -1 while j >= i do (
if l[j] > l[j + 1] then (
elemento : l[j],
l[j] : l[j + 1],
l[j + 1] : elemento
)
)
), print(l)
);
问题是输出是这样的:
(%i1) burbuja([3,2,1]);
[1, 2, 3]
(%o1) [1, 2, 3]
如果我从倒数第二行删除print(l)
,这就是输出:
(%i1) burbuja([3,2,1]);
(%o1) done
问题是如何在不重复的情况下打印结果?
感谢。
答案 0 :(得分:3)
而不是group.id=ct_job_backfill
zookeeper.session.timeout.ms=1000
zookeeper.sync.time.ms=200
auto.commit.enable=true
auto.offset.reset=smallest
rebalance.max.retries=20
rebalance.backoff.ms=2000
topic.name=contentTaskProd
只是将print(l)
放回来从函数中返回l
的值。 (不要放l
,因为return(l)
的效果实际上与其他语言有些不同。)
我还建议在排序前复制列表,这样就不会修改原始列表。在其他任何事情之前尝试return
。
答案 1 :(得分:1)
作为罗伯特·多迪尔答案的补充,还有一些用于解释正在发生的事情的词语。 Maxima具有以下功能的功能语言:
print
必须被视为一种功能,而不仅仅是一种陈述。这两个想法解释了你的情况:
print(l)
执行屏幕上的内容,但也是表达式评估为l(尝试类似a:print(5)$
之类的内容它将打印数字5,但也将值5赋给变量a; print(l)
也是块中的最后一个词,因此您的块将评估为l。因此,您的代码打印l并且还"返回"它
答案 2 :(得分:0)
我发现了问题。而不是print(l)
我应该使用append(l)
。