我创建了一个包含随机数的数组,然后它将按升序对数字进行排序,然后我想打印排序数字的中位数,但我不知道我是什么&# 39;在我的节目中做错了,它只是没有给我中位数。我知道它必须是那么简单的东西,但我似乎无法弄清楚我做错了什么
int main()
{
int *tenarray = (int *) malloc(sizeof(int) * SIZE);
int i;
int j;
int num;
int swap;
int median;
srand(time(NULL));
for (i = 0; i < SIZE; i++)
{
num = rand() % 100;
tenarray[i] = num;
printf("%d\n", tenarray[i]);
}
for (i=0; i<SIZE; i++)
{
for (j=0; j<SIZE+1; j++)
{
if(tenarray[j] > tenarray[j+1])
{
swap = tenarray[j];
tenarray[j] = tenarray[j+1];
tenarray[j+1] = swap;
}
}
}
for(i=0; i<SIZE; i++)
{
printf("Ascending bubble sort is: %d\n", tenarray[i]);
}
median = (tenarray[5]);
printf("median is: %d\n", median);
system("PAUSE");
return 0;
}
答案 0 :(得分:0)
为什么你总是假设中位数是&#34; tenarray [5]&#34;?这只有在SIZE = 11时才有效,你应该这样做:
if(SIZE%2==1)
median = tenarray[SIZE/2];
else
median = (tenarray[SIZE/2] + tenarray[(SIZE/2)-1])/2;