2013-11-14 111 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

相关问题