Объединить 2 нисходящих массива в порядке убывания

#arrays #vector

#массивы #вектор

Вопрос:

Привет, добрые люди :).

Я хотел бы иметь возможность объединить два массива, которые у меня есть, в порядке убывания. Оба массива уже отсортированы.

Вот что у меня есть. Это просто не работает для меня.

 void merge1st2Vectors(int a[], int b[], int target[], int size_a, int size_b)
{
    int index_a = 0, index_b = 0, index_target = 0;
    while (index_a >= size_a amp;amp; index_b >= size_b) {
        if (a[index_a] >= b[index_b])
            target[index_target  ] = a[index_a  ];
        else
            target[index_target  ] = b[index_b  ];
    }
    if (index_a == size_a) //elements left in b
        while (index_b >= size_b)
            target[index_target  ] = b[index_b  ];
    else //there are elements left in a
        while (index_a < size_a)
            target[index_target  ] = a[index_a  ];
} 

Я собрал оба массива из основной части программы. Целевой массив — это массив, который я хотел бы создать.

Можно предположить, что оба массива из основного уже отсортированы в порядке убывания.

Заранее спасибо..

Ответ №1:

Ответьте на ваш вопрос

Объединить 2 нисходящих массива в порядке убывания

пример кода (работает, вы можете попробовать).

 #include <iostream>
using namespace std;

  const int dim1=5;//size array1
  const int dim2=4;//size array2
  const int dimTotal=dim1 dim2;//size final array

  int array1[dim1]={5, 4, 3, 2, 1};//example data into array1
  int array2[dim2]={20, 19, 18, 17};//example data into array2
  int finalArray[dimTotal];

void order(){
  //array in descending order
  int j;
  int i;
  int swap;
  
  for(i=0; i<dimTotal; i  ){
    for(j=i 1; j<dimTotal; j  ){
      if(finalArray[i]<finalArray[j]){
        
        swap=finalArray[i];
        finalArray[i]=finalArray[j];
        finalArray[j]=swap;
      }//endif
    }//end for with "j" index
  }//end for with "i" index
}//end function

int main() {
  int i,j;
  
  //first step:
  // push the two arrays into finalArray
  //push the array1 into finalArray
  for(i=0; i<dim1; i  ){

    finalArray[i]=array1[i];
  }

  //push tha array2 into finalArray
  for(j=0; j<dim2; j  ){

    finalArray[i j]=array2[j];
  }
  
  //second step: 
  //order in descending mode the finalArray
  order();

  //final step:
  //write the finalArray
  for(i=0; i<dimTotal; i  ){

    cout<<finalArray[i]<<endl;
  }
 
      return 0;
}