You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用MiniZinc对数组进行降序排序?

在MiniZinc中实现降序排序

当然可以借助内置的sort函数实现降序排序,核心就是对升序排序后的数组做反向遍历取值。

完整代码示例

% 示例输入数组,索引类型为1..5
array[1..5] of int: input = [3,1,4,2,5];

% 生成升序数组
array[1..5] of int: sorted = sort(input); 

% 通过反向索引推导得到降序数组
array[1..5] of int: reverse_sorted = [sorted[length(sorted) - i + 1] | i in index_set(reverse_sorted)];

% 输出结果验证
output ["升序结果: ", show(sorted), "\n降序结果: ", show(reverse_sorted)];

补充说明

  • 如果你使用的是MiniZinc 2.0及以上版本,还可以直接用内置的reverse函数简化代码:array[1..5] of int: reverse_sorted = reverse(sort(input));,效果完全一致
  • 若输入数组的索引类型不是连续整数范围(比如自定义枚举),可以先将升序数组转换为1-based的临时数组再处理,或者直接用reverse函数更省心

内容的提问来源于stack exchange,提问作者Mev

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.17 12:42:34