gpt4 book ai didi

c - 在c中对正 float 进行排序

转载 作者:行者123 更新时间:2023-11-30 20:17:16 25 4
gpt4 key购买 nike

我正在尝试以最有效的方式对正 float 进行排序。我或多或少有 10k 个元素。

我考虑过基数排序(迄今为止最好的一个)或桶排序,有人有一些建议以及原因。ty

最佳答案

您能否详细描述一下您在实现桶排序或基数排序时遇到的困难?如果没问题(不是家庭作业),您可以使用内置的 qsort (如 @Barmar 建议)。这是该方法的声明。

/* from man pages */
#include <stdlib.h>

void qsort(void *base, size_t nmemb, size_t size,
int (*compar)(const void *, const void *));

void qsort_r(void *base, size_t nmemb, size_t size,
int (*compar)(const void *, const void *, void *),
void *arg);

您可以在 Linux 中使用以下命令(或 google“man qsort”)找到 qsort(或任何此类公共(public) libc 函数)的手册

man qsort

这是一个使用 qsort 对 float 进行排序的示例程序。

#include <stdio.h>
#include <stdlib.h>

/* this function will be used by qsort to compare elements */
int cmp(const void *v1, const void *v2) {
float f1=*((float*)v1);
float f2=*((float*)v2);
if(f1 < f2)
return -1;
else if(f1 > f2)
return 1;
return 0;
}
int main() {
int i;
float x[] = {0.2, 0.3, 0.1};
qsort(x, 3, sizeof(float), cmp);
for(i=0; i<3; i++)
printf("%f\n", x[i]);
}

您可以在此处阅读有关快速排序的信息。 https://en.wikipedia.org/wiki/Quicksort

在此处了解有关函数指针的更多信息 https://en.wikipedia.org/wiki/Function_pointer

关于c - 在c中对正 float 进行排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58180264/

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