c - 对一个数组进行排序并将顺序复制到另一个数组

标签 c arrays

我有两个并排的数组,一个列出了不同的球队,另一个列出了分数。我能够按降序对分数的顺序进行排序。那么这个命令是否可以用来将相应的团队移动到排行榜的正确位置?例如。将获得 100 分的两支球队(美国和德国)移至榜首

#include <stdio.h>

int main() 
{
 char teams[18][20]={"England","Ireland","Wales","Scotland","France","Italy","Germany","Uraguay","Belgium","USA","Mexico","Australia","Belize","Denmark","Sweden","Japan","South Africa","Algeria"};
 int points[18]={43,5,77,23,89,0,100,46,94,100,45,55,32,65,11,37,26,78};
 int i;
 int j;
 int a;

 for (i = 0; i < 18; ++i)
 {
        printf("%i  ",i+1);
        printf("%s",teams[i]);
        printf("\t%d\n", points[i]);
 }
 printf("\n");
 for (i = 0; i < 18; ++i)
 {
        for (j = i + 1; j < 18; ++j)
        {
            if (points[i] < points[j])
            {
                a =  points[i];
                points[i] = points[j];
                points[j] = a;
            }
        }
    }
  for (i = 0; i < 18; ++i)
  {
        printf("%i  ",i+1);
        printf("%s",teams[i]);
        printf("\t%d\n", points[i]);
  }
  return 0;
  }

最佳答案

如评论中所述,典型的解决方案是将数据建模为结构数组,而不是单独的数组。这是有道理的,因为数据是相互关联的。

你会有这样的东西:

struct score {
  const char *name;
  int points;
} scores[] = {
{ "England", 43 },
{ "Ireland", 5 },
/* and so on */
};

然后您可以使用 qsort()(或您自己的排序代码,如果您感兴趣的话)对整个结构实例进行排序,并且所有数据将保持在一起,因为整个结构正在移动.

关于c - 对一个数组进行排序并将顺序复制到另一个数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42974102/

相关文章:

c - C中的递归加法代码

c - 为什么我不能列出存储在数组中的字符串?

c - 快速物流功能

javascript - 基于两个数组创建一个数组

c - C 中信号的进程间通信 - 为什么会失败?

php - Jquery,在每个循环中向数组添加值

arrays - Excel VBA : Detect what slicers were selected and store into an Array

c++ - 另一个虚拟模板解决方法

c - 在C中对多维数组进行排序

c - 优化数组的双重迭代