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

如何编写awk函数实现未排序数组的中位数计算功能

AWK 未排序数组中位数计算函数

实现逻辑

  • 首先对输入的任意未排序数组执行升序排序
  • 读取排序后数组的长度,根据奇偶性计算结果:
    • 长度为奇数时,直接取中间位置的元素作为中位数
    • 长度为偶数时,取中间两个元素的算术平均值作为中位数

函数实现

# 入参说明:arr为待计算的未排序数组,len为数组长度
function calc_median(arr, len,    sorted_arr, mid, median) {
    # 调用awk内置asort函数对数组排序,排序结果存入sorted_arr
    asort(arr, sorted_arr)
    mid = (len + 1) / 2
    if (len % 2 == 1) {
        median = sorted_arr[int(mid)]
    } else {
        median = (sorted_arr[mid - 0.5] + sorted_arr[mid + 0.5]) / 2
    }
    return median
}

注:如果使用的awk版本不支持asort内置函数,可以自行替换为冒泡/快速排序等自定义排序逻辑完成数组排序。

使用示例

比如我们要计算未排序数组[9, 2, 5, 7, 1, 3, 8]的中位数,调用方式如下:

BEGIN {
    # 构造测试数组
    test_arr[1] = 9
    test_arr[2] = 2
    test_arr[3] = 5
    test_arr[4] = 7
    test_arr[5] = 1
    test_arr[6] = 3
    test_arr[7] = 8
    arr_len = 7
    # 调用函数计算
    res = calc_median(test_arr, arr_len)
    print "中位数为:" res
}

运行上述代码输出结果为5,符合预期。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.14 23:45:08