【问题标题】:(C program) Random Number Array program, and sort in ascending order, then find the median(C程序)随机数数组程序,并按升序排序,求中位数
【发布时间】:2017-03-08 08:08:27
【问题描述】:

我创建了一个带有随机数的数组,然后它会按升序对数字进行排序,然后我想打印排序后数字的中位数,但我不知道我在做什么我的程序错了,它不会给我中位数。我知道这一定很简单,但我似乎无法弄清楚我做错了什么

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;
}

【问题讨论】:

  • 您是否确认它们是按排序顺序排列的?您是否进行过任何类型的调试?如果你有,你可能会发现你写的排序函数不正确。但我会把它作为练习留给你去弄清楚。
  • 欢迎来到 Stack Overflow!请展示您迄今为止的研究/调试工作。请先阅读How to Ask页面。

标签: c arrays sorting median


【解决方案1】:

为什么你总是假设中位数是“tenarray[5]”?这只有在 SIZE=11 时才有效,你应该这样做:

if(SIZE%2==1)
    median = tenarray[SIZE/2];
else
    median = (tenarray[SIZE/2] + tenarray[(SIZE/2)-1])/2;

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多