2012-09-04 64 views
0

我需要排序5個數字的數組,這就是我所擁有的。我提示輸入,然後使用冒泡排序對日期進行排序,然後打印數組。但是,當我運行該程序時,輸出不會被排序,甚至不會與輸入相同。使用氣泡排序的C數組中的5個數字

void main() { 
    printf("Please enter five integers:\n"); 
    printf("First Number\n"); 
    scanf("%d", &numArray[0]); 
    printf("Second Number\n"); 
    scanf("%d", &numArray[1]); 
    printf("Third Number\n"); 
    scanf("%d", &numArray[2]); 
    printf("Fourth Number\n"); 
    scanf("%d", &numArray[3]); 
    printf("Fifth Number\n"); 
    scanf("%d", &numArray[4]); 

    for (j=0; j<=5; ++j) { 
     if (numArray[j] > numArray[j+1]) { 
      temp = numArray[j]; 
      numArray[j] = numArray[j+1]; 
      numArray[j+1] = temp; 
     } 
    } 

    for(int j = 0; j < 5; j++) { 
     printf("%d ", numArray[j]); 
    } 
} 
+2

Is this work? – kurtzbot

+2

每當有人寫'void main'時,一隻小貓就會死亡。你的良心想要嗎? –

+0

對於具有5個元素的數組,通常j'= 5'不是一個好的for循環條件。特別是當與循環內的各種'numArray [j + 1]'訪問相結合時。 –

回答

6

你的循環是無效的(它結束了一個),你的排序只包含一個循環;冒泡排序包含兩個循環:

for (i = 0; i < SIZE-1; i++) { 
    for (j = i+1; j < SIZE; j++) { 
     if (val[i] > val[j]) swap(...); 
    } 
}