2016-12-07 5 views
-2

У меня есть этот код, но это не показывает мне требуемый результат. то есть объединить 2 массива и распечатать их в порядке убывания. Я хочу объединить 2 отсортированных массива, введя данные от пользователя. Пользователь будет сказать Размер массива элементов массива тоже, и тогда моя программа должна объединять и сортировать по убыванию и печатьКак отсортировать массив по убыванию

int main() 
{ 

int num1,num2,i,tem; 

printf("Number of elements in first array:"); 
scanf("%d",&num1); 

printf("Number of elements in second array:"); 
scanf("%d",&num2); 

int array1[num1],array2[num2],merge[num1+num2]; 

printf("Elements for array 1 \n"); 

for (i = 0; i < num1; i++) 
{ 
    printf("Element:"); 
    scanf("%d",&array1[i]); 
} 

printf("Elements for second array\n"); 

for (i = 0; i < num2; i++) 
{ 
    printf("Element:"); 
    scanf("%d",&array2[i]); 
} 
for (i = 0; i < num1; i++) 
{ 
    merge[i] = array1[i]; 
} 
for (i = 0; i < num2; i++) 
{ 
    merge[i+num1] = array2[i]; 
} 
for (i = 0; i < num1 + num2; i++) 
{ 
    if (merge[i] < merge[i+1]) 
    { 
     tem = merge[i]; 
     merge[i] = merge[i+1]; 
     merge[i+1] = tem; 
    } 
} 

printf("Merge:"); 

for (i = 0; i < num1 + num2; i++) 
{ 
    printf("%d ",&merge[i]); 
} 

return 0; 

} 
+0

Вы также должны указать, на каком языке вы кодируете, для справок в будущем ... Как говорится, вы не сортируете свой массив. Вы просто добавляете к нему и изменяете значения. Я отвечу ниже. –

+0

Возможный дубликат [Создать отсортированный массив из нескольких предварительно отсортированных массивов] (http://stackoverflow.com/questions/29010420/create-sorted-array-from-multiple-pre-sorted-arrays) –

ответ

0
int count1 = 10; 
int count2 = 15; 

int arNums1[]; 
int arNums2[]; 
int arMergeNums[]; 

arNums1 = new int[count1]; 
arNums2 = new int[count2]; 
arMergeNums = new int[count1 + count2]; 

//POPULATE YOUR FIRST TWO ARRAYS HERE... 

//FILL YOUR MERGED ARRAY LIKE THIS: 
for (int i = 0; i < (count1 + count2); i++) 
{ 
    if (i < count1) 
     arMergeNums[i] = arNums1[i]; 
    else arMergeNums[i] = arNums2[i]; 
} 

//THEN SORT IT LIKE THIS: 
for (int i = 0; i < (count1 + count2); i++) 
{ 
    for (int j = i + 1; j < (count1 + count2); j++) 
    { 
     if (arMergeNums[i] < arMergeNums[j]) 
     { 
      int temp = arMergeNums[i]; 
      arMergeNums[i] = arMergeNums[j]; 
      arMergeNums[j] = temp; 
      temp = null; 
     } 
    } 
} 

Вот это ...

+0

Помогло ли это? –

+0

спасибо большое. Да, это –

+0

Нет проблем. Не забудьте проголосовать и отметить это как ваш ответ. Добро пожаловать в Stack Overflow, кстати! –

0
$(document).ready(function(){ 
    var cars = [4,3,9,6]; 
for(i=0;i<cars.length;i++){ 
//var carsrev=cars[cars.length-i-1]; 
    //alert(carsrev); 
    $('<li>'+cars[cars.length-1-i]+'</li>').appendTo("ul.demo"); 
//alert($("ul.demo li").length); 
    } 
}); 

// Out Put является 6 9 3 4 not 9 6 4 3 его просто обратный

Смежные вопросы