Merge two arrays in sorted order

Question: Merge two arrays in sorted order without duplicate (without using extra array)
Output:
Merge Two Arrays
Method 1:
Sort both array1 and array2 separately and eliminate the duplicates. Add array1 elements into the new array and then add array2 elements into the new array in sorted order.
Method 2:
Sort both array1 and array2 separately and also elimate the duplicates. Then add array2 elements into array1 in sorted order.
Method 3:
Sort array1 and also eliminate the duplicates and then add array2 into array1 in sorted order. The below code is done in this method.
Logic:
- To merge two arrays, get two array elements from the user
- Sort the first array and also eliminate the duplicates in that array
- Insert the array2 elements into array1 by using some conditions
- Array2 element is equal to the array1 element is duplicate and we can’t that element into the array1
- Find the index of array1 where the array1 element is greater than array2 element and insert array2 element into the array1
- Add the element into array1’s last position when no element is greater then array2 with array1
- Then print the merged array
About C arrays More>>
Program:
[code lang=”c”]
void main()
{
int *array1,*array2,length1,length2,index1,index2,index3,temp_var,mark=0;
printf("Enter the length of two arrays:");
scanf("%d%d",&length1,&length2);
array1=(int*)malloc((length1+length2)*sizeof(int));
array2=(int*)malloc(length2*sizeof(int));
printf("Enter first array elements:");
for(index1=0;index1<length1;index1++)
scanf("%d",&array1[index1]);
printf("Enter second array elements:");
for(index1=0;index1<length2;index1++)
scanf("%d",&array2[index1]);
for(index1=0;index1<length1;index1++) //sort the first array and eliminating duplicates
{
for(index2=index1+1;index2<length1;index2++)
{
if(array1[index1]==array1[index2]) //duplicates eliminated
{
for(index3=index2;index3<length1;index3++)
{
temp_var=array1[index3];
array1[index3]=array1[index3+1];
array1[index3+1]=temp_var;
}
length1–;
}
else if(array1[index1]<array1[index2])
{
temp_var=array1[index1];
array1[index1]=array1[index2];
array1[index2]=temp_var;
}
}
}
for(index2=0;index2<length2;index2++) //merge second array into first array in sorted order and duplicates are eliminated
{
for(index1=0;index1<length1;index1++)
{
if(array2[index2]==array1[index1]) //duplicates eliminated
{
mark=1;
break;
}
else if(array2[index2]<array1[index1])
{
mark=1;
for(index3=length1;index3>index1;index3–) //move the elements one position right
{
array1[index3]=array1[index3-1];
}
array1[index1]=array2[index2];
length1++;
break;
}
}
if(mark==0) //copy the element when no other element is greater then index2 of array2
{
array1[index1]=array2[index2];
length1++;
}
}
for(index1=0;index1<length1;index1++)
{
printf("%d ",array1[index1]);
}
}
[/code]