数组在我的 C 程序中未正确排序

问题描述 投票:0回答:1

代码:

#include <stdio.h>
int main(){

    int n, arr[30],i,j, median, temp; 
    printf("Enter Array Size: "); scanf("%d", &n);
    printf("Enter Array Elements :"); 
    for (i=0;i<n;i++){
        scanf("%d", &arr[i]);
    }

    printf("Array After Sorting: \n");
    for(i=0;i<n-1;i++){
        for(j=0;j<n-1;j++){
            if(arr[j]<arr[j+1]){   
                temp = arr[j];
                arr[j]=arr[j+1];
                arr[j+1]=temp;
            }
            else{
            continue;
            }
        }
    }
    if (n%2==0){
    median = (arr[n/2]+ arr[n/2+1]/2.0);
    }
    else{
    median = arr[n/2+1];
    }
    for (i=0;i<n;i++){
        printf("%d\n", arr[i]);
    }
    
    printf("Median: %d",median);

}

所以我试图对数组进行排序并找到它的中位数,但我没有得到预期的输出

预期输出:

Enter·Array·Size:·4

Enter·Array·Elements·:

5
2
6
1

Array·After·Sorting·:

1
2
5
6

Median:·3

我得到的输出:

Enter·Array·Size:·4

Enter·Array·Elements·:

5
2
6
1
    
Array·After·Sorting:·
6
5
2
1

Median:·2

这是我的 C 编程实验室问题,他们没有教我们有关排序的知识,但他们希望我们解决所有这些问题。

我似乎无法理解代码有什么问题。

arrays c sorting
1个回答
0
投票

问题在于中位数的计算。更改此行:

median = (arr[n/2] + arr[n/2 + 1]) / 2.0;

至:

median = (arr[n/2 - 1] + arr[n/2]) / 2;
© www.soinside.com 2019 - 2024. All rights reserved.