gpt4 book ai didi

c - 如何在排序之前获取数组中数字的前一个位置?

转载 作者:行者123 更新时间:2023-11-30 20:31:57 26 4
gpt4 key购买 nike

我有一个代码可以按降序对数字数组进行排序,但我也想知道排序后排序之前数组中数字的第 n 个位置。我怎样才能得到它?

    int main ()
{
int H[200];
int i,j;
double a;

for( i = 0; i < 200; ++i)
{
for( j = i+1; j < 200; ++j)
{
if(H[i] < H[j])
{
a = H[i];
H[i] = H[j];
H[j] = a;
}
}
}
printf("H in descending order \n");

for ( i = 0; i < 200; ++i)
{
printf("%lf \n",H[i];
}


}

最佳答案

获得此结果的一种可能性是,就像上面 Nominal Animal 提到的那样,将值存储在结构中,并对结构进行排序。

排序时,必须注意数据类型。你正在混合 int 和 double 。此外,%lf 并不意味着打印 int 值。

以下代码对一个列表进行排序,并提供数字的初始索引。

#include <stdio.h>

typedef struct sort_s{
long number;
long index;
}sort_t;

int main(void){

sort_t S[200];
long H[200];
long i,j;
long a;

for(i=0;i<200;i++){
S[i].number = H[i];
S[i].number = i; /*for testing*/
S[i].index = i;
}

for( i = 0; i < 200; ++i)
{
for( j = i+1; j < 200; ++j)
{
if(S[i].number < S[j].number)
{
a = S[i].number;
S[i].number = S[j].number;
S[j].number = a;
}
}
}
printf("H in descending order \n");

for ( i = 0; i < 200; ++i)
{
printf("%ld at pos: %ld \n",S[i].number,S[i].index);
}


return 0;

}

关于c - 如何在排序之前获取数组中数字的前一个位置?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49267673/

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