首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >数组的排序方式

数组的排序方式
EN

Stack Overflow用户
提问于 2019-03-05 01:36:23
回答 1查看 88关注 0票数 -2

假设我们有一个长度为n的整数数组。我们需要一个像f(arr, n)这样的函数,它返回一个介于-100%+100%之间的数字。结果越接近+100%,升序的数组越多;离-100%越近的结果,降序的数组越多。如果数组完全按随机顺序排列,则结果应该接近0%

这是我到目前为止的实现:

代码语言:javascript
复制
long map(long x, long in_min, long in_max, long out_min, long out_max)
{
    return (x - in_min) * (out_max - out_min) / (in_max - in_min) + out_min;
}

int f(int arr[], int n) {
    int p = 0;

    for (int i = 0; i < n - 1; i++) {
        int a = arr[i];
        int b = arr[i + 1];

        if (a != b) {
            bool asc_check = a < b;
            bool desc_check = a > b;

            if (asc_check && !desc_check)
                p++;

            else if (!asc_check && desc_check)
                p--;
        }
    }

    return map(p, -(n - 1), n - 1, -100, 100);
}

我怀疑我的代码是否准确。请帮我写正确的实现。

谢谢!

EN

回答 1

Stack Overflow用户

发布于 2019-03-05 08:46:47

可以使用STL库在c ++中提供的排序类。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/54988633

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档