2016-10-26 28 views
-1

我已經創建了一個隨機數組,然後它會按升序對數字進行排序,然後我想打印排序數字的中位數是多少,但我不知道我在我的程序中做錯了什麼,它只是不會給我中位數。我知道這一定是東西是如此簡單,但我似乎無法找出我在做什麼錯(C程序)隨機數字數組程序,並按升序排序,然後找到中位數

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

你確認他們是在排序?你有沒有做過任何類型的調試?如果你有,你可能會發現你寫錯了你的排序功能。但我會把它作爲一個練習讓你弄清楚。 – paddy

+0

歡迎來到Stack Overflow!請說明迄今爲止的研究/調試工作。請先閱讀[問]頁面。 –

回答

0

爲什麼你總是假設中位數是「tenarray [5]」?這隻會工作,如果SIZE = 11,你應該這樣做:

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