按升序排列2个数组 - C编程

时间:2017-07-06 15:08:40

标签: c arrays sorting

当我试图以递增的方式安排2个阵列时,我陷入了困境。 例如,我有:

ProgressIndicator

我想按升序排列X [],但是如果我在数组上更改了一个值,Y []数组上的相同值也会改变到同一个地方。

结果:

X[] = {4,2,8,2}
Y[] = {12,12,6,12}

非常感谢!

2 个答案:

答案 0 :(得分:1)

在排序时,你必须同时移动2个数组元素

这是一个带冒号排序的例子:( n数组的长度)

for(int last=0; last<n; last++)
{
    for(int new=0; new<n-1; new++)
    {
        if(X[new]>X[new+1])
        {
            int temp = X[new+1];
            X[new+1] = X[new];
            X[new] = temp;

            temp = Y[new+1];
            Y[new+1] = Y[new];
            Y[new] = temp;
        }
    }
}

就像这样(在移动数组元素的循环中重复)

答案 1 :(得分:0)

选择任意排序功能。例如冒泡排序。修改函数,以便对两者进行相同的操作。

void swap(long *a, long *b)
{
  int t=*a;
  *a=*b;
  *b=t;
}

void bubble_sort(long list[], long n, long extra[])
{
  long c, d, t;

  for (c = 0 ; c < ( n - 1 ); c++)
    for (d = 0 ; d < n - c - 1; d++)
      if (list[d] > list[d+1])
      {
        swap(list[d], list[d+1]);
        swap(extra[d], extra[d+1]);
      }
}