Hi all. basically I need to hand up a project on merge and sort array in char.
First input: a c e g
Second input: b d f h
Output: a b c d e f g h
I found this code using bubble sort. But i don't understand some of the line mean. so can someone explain out for me? or is there any easy way i can code myself without using bubble sort?

Code:
#include<stdio.h>
#include<stdlib.h>


void sort(char data[], int length)
{
   int end = length - 1;
   for (int i = 0; i < length; ++i)
   {
       for (int j = 0; j < end; ++j)
       {
           if (data[j] > data[j+1])
           {
               char tmp = data[j];
               data[j] = data[j+1];
               data[j+1] = tmp;
           }
       }      
       --end;
   }
}

int main(void)
{
   char firstArray[100];
   char secondArray[100];
   char mergedArray[200];

   int i;
   int mergedIndex;

   printf("Put in the first array\n");
   fgets(firstArray, sizeof(firstArray), stdin);

   printf("Put in the second array\n");
   fgets(secondArray, sizeof(secondArray), stdin);

   // Copy the first array into the merged array
   for(i = 0; firstArray[i] != '\n'; ++i)
   {
       mergedArray[i] = firstArray[i];
   }
   mergedIndex = i;
   for(i = 0; secondArray[i] != '\n'; ++i)
   {
       mergedArray[mergedIndex++] = secondArray[i];
   }
   mergedArray[mergedIndex] = 0;

   sort(mergedArray, mergedIndex);
   printf("Merged array is '%s'\n", mergedArray);
   system("pause");
   return 0;
}