我需要组织我的数组来查找中位数。我不能在我的问题中使用_ []运算符,我看不出为什么我的代码不起作用
int Median(int* numbers, int size)
{
int temp;
int *num_tmp = numbers;
int i, j;
for (i = 0; i< size - 1; i++) {
for (j = i + 1; j< size; j++) {
if (*(num_tmp+1) < num_tmp) {
temp = num_tmp;
num_tmp = (num_tmp+1);
*(num_tmp+1) = temp;
}
}
}
}
答案 0 :(得分:0)
你明白了但没有正确使用它。
if (*(num_tmp+1) < num_tmp)
^ ^^^^^^^^ ^^^^
An int value A pointers value
您正在将地址与int
变量进行比较。你不希望这样。改变一点会产生,
if (*(num_tmp+1) < *num_tmp)
现在问它在逻辑上是对的吗?不。算法仍然是错误的。
应该是
if (*(num_tmp+j) < *(num_tmp+i))
{
temp = *(num_tmp+j);
*(num_tmp+j) = *(num_tmp+i);
*(num_tmp+i) = temp;
}
使用此代码,您将正确组织阵列。
此外,如果您使用gcc
编译程序,请添加-Wall -Werror
,以显示所有警告。