(C程序)随机数数组程序,并按升序排序,然后找到中位数

时间:2016-10-26 05:07:21

标签: c arrays sorting median

我创建了一个包含随机数的数组,然后它将按升序对数字进行排序,然后我想打印排序数字的中位数,但我不知道我是什么&# 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;
}

1 个答案:

答案 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;