#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;
}