gpt4 book ai didi

c - C语言中的中值函数

转载 作者:行者123 更新时间:2023-11-30 14:49:25 33 4
gpt4 key购买 nike

int findMedian (int argc, char** argv){

int temp;
for(int i=0; i<argc; ++i) { /// bubble sort the array
for(int j=i+1; j<argc ; ++j) {
if(argv[i] > argv[j]) {
temp = atoi(argv[i]);
argv[i] = argv[j];
*argv[j] = temp;
}
}
}
int Median;
if(argc %2 == 0){///if is even amount of number, take the mean of middle two number

Median= ((atoi(argv[argc / 2 ])+ atoi(argv[argc / 2 + 1])) /2);
}
else{ /// if is odd amount of number, take the middle number.
Median = atoi(argv[argc / 2 + 1 ]);
}
return Median;
}

我的中值函数将给出一个未排序的中值。有人知道为什么吗?感谢您的帮助。

最佳答案

首先,对指向数字字符串表示形式的指针而不是数字进行排序。假设您的数字是整数(因为您使用 atoi 并返回 int)。您应该分配一个适当长度的整数数组,在循环中使用 strtol() 将字符串转换为整数,并将整数存储到数组中。现在,数据已准备好进行排序。

注意 1:不要使用 atoi() 进行转换,因为它无法区分真正的 0 和非数字字符串 - 除非您可以保证所有字符串是整数的有效表示。

注释 2:由于您的函数旨在计算整数数组的中位数,因此请将整数数组作为参数。在其他地方(在调用者中)进行转换。

最后,考虑使用 qsort() 而不是手动对数组进行排序。 qsort() 众所周知,与您的代码不同,它的速度平均要快得多。

关于c - C语言中的中值函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49599751/

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