2017-08-06 215 views
-2

我編寫的程序按升序對數組進行排序,將其排序爲降序,我不明白爲什麼。任何幫助讚賞。數組排序按降序而不是升序排列

#include<iostream> 
using namespace std; 
int main() { 
    int a[20] = { 21, 31, 1, 5, 3, 7, 87, 324, 21, 990, 34, 33, 21, 123, 54, 45, 
      66, 76, 23, 44 }, t; 
    for (int i = 0; i < 20; i++) { 
     for (int j = 0; j < 20; j++) { 
      if (a[i] < a[j]) { 
       t = a[i]; 
       a[i] = a[j]; 
       a[j] = t; 
       } 

     } 
    } 
    cout << endl; 
    for (int i = 0; i < 20; i++) { 
     cout << a[i] << "\t"; 
    } 
} 
+0

改變你的內循環;或者正確讀取數組以及如何使用內部或外部循環來比較值。 –

+0

它沒有,當我測試它。 – molbdnilo

回答

1

由於條件的你寫

if (a[i] < a[j]) 

所以,如果前一個元素比它被換

0

你不必做任何改變,如果從第(i + 1)個位置啓動內循環。
替換下面的代碼段的第二代碼:

for (int j = i+1; j < 20; j++) 
0

改變你innerloopĴ代碼= I + 1;

int a[20] = { 21, 31, 1, 5, 3, 7, 87, 324, 21, 990, 34, 33, 21, 123, 54, 45, 
         66, 76, 23, 44 }, t; 
       for (int i = 0; i < 20; i++) { 
        for (int j = i+1; j < 20; j++) { // not j=0, please use use **j=i+1;** 
         if (a[i] < a[j]) { 
          t = a[i]; 
          a[i] = a[j]; 
          a[j] = t; 
          } 

        } 
       }