gpt4 book ai didi

c - 在 C 中对列表进行排名而不进行排序

转载 作者:行者123 更新时间:2023-11-30 18:37:51 25 4
gpt4 key购买 nike

我尝试对数据进行排名,但结果不是我所期望的。我的 {} 如下:

    for(i = 0; i < 100; i++) 
{
int curRank=1;

for (j = 0; j < i; j++)
// add x[i] to list, need to update the ranks.
{
if (x[i] > x[j])
{ // Update rank of x[i]
curRank++;
}
else
{ // A number smaller than x[j] has appeared. Update rank of x[j]
rank[j]++;
}
}

rank[i]=curRank;
printf("%lf %d\n", x[i],rank[i]);
}

结果是这样的:

30.000000 1
71.510000 2
3.300000 1
87.440000 4
53.420000 3
63.160000 4
89.100000 7
25.750000 2
.......

显然,这是错误的。有人能帮我解决这个问题吗?谢谢。

最佳答案

您的算法有效,但在处理所有值后排名尚未完成。因此,您无法随时打印排名。您必须在单独的循环中完成算法后打印排名:

    double x[8] = {30, 71.51, 3.3, 87.44, 53.42, 63.16, 89.1, 25.75};
int rank[8] = {0};
int i, j;

for (i = 0; i < 8; i++) {
int curRank = 1;

for (j = 0; j < i; j++) {
if (x[i] > x[j]) {
curRank++;
} else {
rank[j]++;
}
}

rank[i] = curRank;
}

for (i = 0; i < 8; i++) {
printf("%lf %d\n", x[i], rank[i]);
}

关于c - 在 C 中对列表进行排名而不进行排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35595441/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com