2013-11-14 159 views
-4

我想按降序將數字寫入數組x []中。例如,我輸入數組長度爲3,但數字未列爲3,2,1。它寫入0 0 0.任何人都可以建議我需要做什麼?如何按降序對數字進行排序

int main() 
{ 
    int x[500000], size, i; 
    printf("Enter the lenght of the array: "); 
    scanf("%d", &size); 

    for (i = size; i > 0; i--) 
    { 
    printf("%4d", x[ i ]); 
    } /* end for */ 
+0

你初始化了數組的元素嗎? – devnull

+2

先寫一個僞代碼(邏輯)然後實現它。 – karthikr

+0

不,我沒有初始化數組的元素。我該怎麼做 ? – Behzat

回答

0

只需一行添加到您的代碼將初始化至少元素要打印:

int main() 
{ 
    int x[500000], size, i; 
    printf("Enter the lenght of the array: "); 
    scanf("%d", &size); 

    for (i = size; i > 0; i--) 
    { 
    x[i] = i; // <<<<<<<<<<<<<< add this line 
    printf("%4d", x[ i ]); 
    } 
} 

如果你想所有的元素在他們的對應值,你可以做

int main() 
{ 
    int x[500000], size, i; 
    printf("Enter the lenght of the array: "); 
    scanf("%d", &size); 

    // initialize all the elements: 
    for(i = 0; i < 50000; i++) x[i] = i; 

    // check just a few: 
    for (i = size; i > 0; i--) 
    { 
    printf("%4d", x[ i ]); 
    } 
} 
+0

這就是我需要的。非常感謝弗洛里斯。 – Behzat

0

您輸入數組的LENGTH,但是它沒有提供有關元素值的信息。這就像我告訴你:我給你5個數字,對它們進行排序。你不能對它們進行排序,因爲你不知道元素值。 你得到的值只是內存中的垃圾值。

這是有點不清楚你真的想做什麼。如果你只是想得到一個輸出像3,2,1,把printf("%d ", i);裏面for循環(並擺脫陣列)。如果您真的想對一些數據進行排序,那麼您需要將數據存入數組,然後實施排序算法對其進行排序。

+0

我嘗試爲反向排序列表實現快速排序。例如;數組大小將爲1000,因此數字將按1000,999,998 ... 2,1排序。然後快速排序將執行並將列表排序爲1,2,3 ...,999,100。 – Behzat

+0

排序反向排序列表沒有意義。您可以將其從最後一直循環到請求。 – Paul92

相關問題