如何按降序排序数字

时间:2013-11-14 17:13:21

标签: c sorting

我想用降序将数字写入数组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 */

2 个答案:

答案 0 :(得分:0)

您输入数组的LENGTH,但这不提供有关元素值的信息。就像我告诉你的那样:我给你5个数字,然后对它们进行排序。您无法对它们进行排序,因为您不知道元素值。 您获得的值只是内存中的垃圾值。

有点不清楚你真正想做什么。如果你只想获得类似3,2,1的输出,则将printf("%d ", i);放入for循环(并摆脱数组)。如果你真的想要对一些数据进行排序,那么你需要将数据放入一个数组中,然后实现一个排序算法来对它进行排序。

答案 1 :(得分: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 ] );
  } 
}
相关问题