2014-10-12 129 views
-2

如果我將條件(i < n -1)更改爲(i < n),它會發生故障,並且就像現在一樣,除第一個位置[0]以外的所有位置都被排序。泡沫排序除了第一個點

int sortIndexByDate(Match match[], int n) 
{ 
    int i, j, sum[n], swapped; 
    for (i = 0; i < n; i++) 
     sum[i] = match[i].d.year*10000 + match[i].d.month*100 + match[i].d.day; 
    do { 
     swapped = false; 
     for (i = 1; i < n - 1; i++) { 
      if (sum[i] < sum[i + 1]) { 
       swapInt(&sum[i], &sum[i+1]); 
       swapMatch(&match[i], &match[i+1]); 
       swapped = true; 
      } 
     } 
     n--; 
    } while (swapped); 
} 
+0

你有問題嗎? – 2014-10-12 02:13:56

+1

嗯......'我 beaker 2014-10-12 02:18:46

回答

0

您在內循環中從i = 1開始。因此sum [0]被忽略。

將其更改爲

for (i = 0; i < n-1; i++) {  
+0

'i Dmitri 2014-10-12 02:20:44

+0

@Dmitri謝謝,我錯過了 – Buddha 2014-10-12 02:21:31