请问用c语言怎么解这题?如果能配上解释就更好了,多谢

读入一对正整数,将这两个数之间(包括这两个数本身)的所有数按下述特别规则排序后输出,该特别规则是按两数倒过来的值进行比较决定其大小,如30倒过来为3,29倒过来为92,则29大于30.

输入要求
1行两个正整数x和y,用一个空格隔开,1<=x<=y<=10000,y-x<=100

输出要求
包括y-x+1行,每行一个正整数,按两数到过来的值进行比较决定其大小,然后由小到大输出。

输入样例
22 39

输出样例
30
31
22
32
23
33
24
34
25
35
26
36
27
37
28
38
29

int min, max;
scanf("%d %d", &min, &max);
int array[max-min];
int reversalArray[max-min];
//先初始化 数组array 和 数组reversalArray
for(int i = 0; i < max-min; i++) {
  array[i] = min + i;
  int num = min + i;
  int reversalNum = 0;
  while(num) {
    reversalNum = reversalNum * 10 + num%10;
    num = num / 10;
  }
  reversalArray[i] = reversalNum;
}
//按照 数组reversalArray 进行排序
//max-min是数组最后一个下标,它后面没有了就不能再和后面的比了,所以减去1,防止数组下标越界
for(int i = max-min-1; i >= 0; i--) {  
  for(int j = 0; j < i; j++) {
    int tmp = 0;
    if(reversalArray[j] > reversalArray[j+1]) {
      tmp = reversalArray[j];
      reversalArray[j] = reversalArray[j+1];
      reversalArray[j+1] = tmp;
      //同时交换 数组array 
      tmp = array[j];
      array[j] = array[j+1];
      array[j+1] = tmp;
    }
  }
}
//输出
for(int i = 0; i < max-min; i++) {
  printf("%d\n",array[i]);
}
return 0;