0

以下は、数値を減少しない順序でソートするために使用されるコードです。

#include<stdio.h>
#include<stdlib.h>
# define size 1000001
static int a[size];
int main()
{
  int t, k, i;
  scanf("%d", &t);
  for(i = 0; i < t; i++)
  {
    scanf("%d", &k);
    a[k] += 1;
  }
  for(i = 0; i < 1000001; i++)
  {
    while(a[i]-- != 0)
      printf("%d\n", i);
  }
  return 0;
}

誰かが私にコードを説明できれば、本当に助かります。私はコードを調べましたが、数値をソートする方法がわかりません。どこでもスワッピングは行われませんが、C++ エディターでは機能します。

4

6 に答える 6

0

このコードは、配列内の値ごとに繰り返されますaa[i]配列内の各値は、while ループで反復されます。while(a[i]--!=0)a[i] の値がゼロかどうか調べます。そうでない場合は、ループ本体が実行されます。コントロールがループ本体に入ると、a[i] 値が減少します。例) a[i]=6 の場合、出力は次のようになります。

5
4
3
2
1
0
于 2013-07-02T11:13:28.667 に答える
0

a[i]毎回出力しながら0になるまで変数を減らします

于 2013-07-02T11:05:31.847 に答える