median - 最低编号比较以找到3个数字的中位数

标签 median

我正在实施quicksort,我希望将枢轴设置为中位数或三位数。这三个数字是第一个元素,中间元素和最后一个元素。

我能不能找到中位数呢?比较?

median(int a[], int p, int r)
{
    int m = (p+r)/2;
    if(a[p] < a[m])
    {
        if(a[p] >= a[r])
            return a[p];
        else if(a[m] < a[r])
            return a[m];
    }
    else
    {
        if(a[p] < a[r])
            return a[p];
        else if(a[m] >= a[r])
            return a[m];
    }
    return a[r];
}

最佳答案

您不能一次完成,而只能使用两个或三个,所以我想说您已经有了最少的比较。

关于median - 最低编号比较以找到3个数字的中位数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17158667/

相关文章:

c - 排序数组 union 的中位数 - 递归结束后做什么

python - 将每个列表值映射到其相应的百分位数

sql - 计算 SQL 公用表表达式中列的中位数

ruby - 在 Ruby 中计算中位数

java - 如何在java中添加带有空格的int输入?

python - 写一个中值函数

r - R中的中值绝对偏差计算

python - 根据 bool python 获取数组部分的中位数

mysql - Min、Max、Average 和 Count 分组到 15 分钟的 bin 中

ios - iOS的中值过滤器