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

Game Maker Studio 2中如何在快速排序中集成SPEED宏实现角色速度排序

解决方案

核心修改点如下:

  • 原快速排序代码直接对比列表元素本身,需替换为读取元素的current[SPEED]属性进行比较,保持和冒泡排序一致的降序逻辑
  • 适配GML中ds_list的|访问符,补全临时变量的var局部声明避免作用域污染
  • 修正原递归边界逻辑,避免死循环崩溃

修改后完整代码

分区函数

function partition(list, low, high){
    var pivot = list[|high];
    var pivot_speed = pivot.current[@SPEED];
    var i = low;
    var swapped;

    for (var j = low + 1; j <= high; j++) {
        // 使用SPEED宏读取速度值对比,保持降序逻辑
        if (list[|j].current[@SPEED] > pivot_speed) {
            i++;
            swapped = list[|i];
            list[|i] = list[|j];
            list[|j] = swapped;
        }
    }

    // 将基准元素交换到最终排序位置
    swapped = list[|i];
    list[|i] = list[|high];
    list[|high] = swapped;

    return i;
}

快速排序主函数

function quicksort(list, low, high) {
    if (low < high) {
        var partition_ref = partition(list, low, high);
        // 修正递归边界,排除已排好的基准元素
        quicksort(list, low, partition_ref - 1);
        quicksort(list, partition_ref + 1, high);
    }
}

调用示例

和你原有冒泡排序的入参完全兼容,直接传入global.units即可:

var unit_count = ds_list_size(global.units);
if (unit_count > 1) {
    quicksort(global.units, 0, unit_count - 1);
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.28 08:18:01