gpt4 book ai didi

C - 在跟踪索引的同时对 float 组进行排序

转载 作者:太空狗 更新时间:2023-10-29 16:47:36 24 4
gpt4 key购买 nike

我有一个包含 3 个浮点值的数组:

float norms[3];

norms[0] = 0.4;
norms[1] = 3.2;
norms[2] = 1.7;

我想按降序对这个数组进行排序同时跟踪数组中值的原始索引

换句话说,给定数组 norms[] = {0.4, 3.2, 1.7} 和相应的索引 {0, 1, 2},我基本上想要获取相应 ints 的数组,该数组反射(reflect) norms[]float 值的原始位置,按降序排序。在这种情况下,它将是 {1, 2, 0}

实现此目标的最佳/最干净的方法是什么?

最佳答案

使用一个结构来存储值和索引,然后根据值进行排序。

struct str
{
float value;
int index;
};

int cmp(const void *a, const void *b)
{
struct str *a1 = (struct str *)a;
struct str *a2 = (struct str *)b;
if ((*a1).value > (*a2).value)
return -1;
else if ((*a1).value < (*a2).value)
return 1;
else
return 0;
}

int main()
{
float arr[3] = {0.4, 3.12, 1.7};
struct str objects[3];
for (int i = 0; i < 3; i++)
{
objects[i].value = arr[i];
objects[i].index = i;
}
//sort objects array according to value maybe using qsort
qsort(objects, 3, sizeof(objects[0]), cmp);
for (int i = 0; i < 3; i++)
printf("%d ", objects[i].index); //will give 1 2 0
// your code goes here
return 0;
}

关于C - 在跟踪索引的同时对 float 组进行排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36714030/

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