Question

Please write a Merge sort algorithm java program using array contains different number of integers. First...

Please write a Merge sort algorithm java program using array contains different number of integers. First picked the 4-6 different numbers of integers by doubling (for example :the length of the 2nd array is twice as long as the 1st array)

0 0
Add a comment Improve this question Transcribed image text
Answer #1

Code:

class MergeSort
{
   // Merges two subarrays of arr[].
   // First subarray is arr[l..m]
   // Second subarray is arr[m+1..r]
   void merge(int arr[], int l, int m, int r)
   {
       // Find sizes of two subarrays to be merged
       int n1 = m - l + 1;
       int n2 = r - m;

       /* Create temp arrays */
       int L[] = new int [n1];
       int R[] = new int [n2];

       /*Copy data to temp arrays*/
       for (int i=0; i<n1; ++i)
           L[i] = arr[l + i];
       for (int j=0; j<n2; ++j)
           R[j] = arr[m + 1+ j];


       /* Merge the temp arrays */

       // Initial indexes of first and second subarrays
       int i = 0, j = 0;

       // Initial index of merged subarry array
       int k = l;
       while (i < n1 && j < n2)
       {
           if (L[i] <= R[j])
           {
               arr[k] = L[i];
               i++;
           }
           else
           {
               arr[k] = R[j];
               j++;
           }
           k++;
       }

       /* Copy remaining elements of L[] if any */
       while (i < n1)
       {
           arr[k] = L[i];
           i++;
           k++;
       }

       /* Copy remaining elements of R[] if any */
       while (j < n2)
       {
           arr[k] = R[j];
           j++;
           k++;
       }
   }

   // Main function that sorts arr[l..r] using
   // merge()
   void sort(int arr[], int l, int r)
   {
       if (l < r)
       {
           // Find the middle point
           int m = (l+r)/2;

           // Sort first and second halves
           sort(arr, l, m);
           sort(arr , m+1, r);

           // Merge the sorted halves
           merge(arr, l, m, r);
       }
   }

   /* A utility function to print array of size n */
   static void printArray(int arr[])
   {
       int n = arr.length;
       for (int i=0; i<n; ++i)
           System.out.print(arr[i] + " ");
       System.out.println();
   }

   // Driver method
   public static void main(String args[])
   {
       int arr[] = {12, 11, 13, 5, 6};

       System.out.println("Given Array");
       printArray(arr);

       MergeSort ob = new MergeSort();
       ob.sort(arr, 0, arr.length-1);

       System.out.println("\nSorted array");
       printArray(arr);
      
      
       int doublearr[] = {12, 11, 13, 5, 6, 7, 1, 4, 3, 5};

       System.out.println("\nGiven Double Length Array");
       printArray(doublearr);
       ob.sort(doublearr, 0, doublearr.length-1);

       System.out.println("\nSorted Double Length array");
       printArray(doublearr);
      
   }
}

Output:

Add a comment
Know the answer?
Add Answer to:
Please write a Merge sort algorithm java program using array contains different number of integers. First...
Your Answer:

Post as a guest

Your Name:

What's your source?

Earn Coins

Coins can be redeemed for fabulous gifts.

Not the answer you're looking for? Ask your own homework help question. Our experts will answer your question WITHIN MINUTES for Free.
Similar Homework Help Questions
ADVERTISEMENT
Free Homework Help App
Download From Google Play
Scan Your Homework
to Get Instant Free Answers
Need Online Homework Help?
Ask a Question
Get Answers For Free
Most questions answered within 3 hours.
ADVERTISEMENT
ADVERTISEMENT