2016-10-26 3 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

Добро пожаловать в переполнение стека! Покажите свои исследования/отладки. Сначала прочитайте страницу [Ask]. –

ответ

0

Почему вы всегда предполагать, медиана «tenarray [5]»? Это будет работать только в том случае, если SIZE = 11, вы должны сделать что-то вроде этого:

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

 Смежные вопросы

  • Нет связанных вопросов^_^