gpt4 book ai didi

c - 如何正确使用qsort()?

转载 作者:太空宇宙 更新时间:2023-11-04 02:47:26 25 4
gpt4 key购买 nike

我正在尝试编写一个简单的程序来查找数组的中位数。为此,我首先尝试使用 qsort 来整理我的值,但我无法让它正常工作。我相信这与我的函数参数和指针有关。

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


int cmpfunc (const void * a, const void * b)
{
return ( *(int*)a - *(int*)b );
}

int median(const int* array)
{
double median;
int length =0;
while(array[length])
length++;

qsort(*array, length, sizeof(int), cmpfunc);

if(length %2 ==0)
{
median=(array[length/2] + array[(length/2)+1])/2;
}
else
{
median = array[(length +1/2)];
}
return median;
}

int main ()
{
int array [] = {5, 3, 2, 7, 9};
printf( "%f", median(array));
}

最佳答案

除此之外,您在 length 的代码段中得到了错误的值

 while(array[length])  // Array is not ended with zero
length++; // Length would get some unexpected value

您需要从函数median 返回double 并且length 还需要一个参数。

double median(int* array, const int length){...}  
// ^Removed const qualifier and added an extra parameter for array size

中位数称为

double result = median(array, sizeof(array)/sizeof(array[0]))

关于c - 如何正确使用qsort()?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25768588/

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