Adjust the code to calculate Merge Sort run time. Populate the table above.   array size 10,000 100,000 1,000,000 10,000,000 worst         best       Code: public class MergeSort {   public static void mergeSort(int[] list) { System.out.println("at the beginning of Mergesort: " +Arrays.toString(list)); if (list.length > 1) {   // apply MergeSort on the first half int[] firstHalf = new int[list.length / 2]; System.arraycopy(list, 0, firstHalf, 0, list.length / 2); mergeSort(firstHalf);   // apply MergeSort on the second half int secondHalfLength = list.length - list.length / 2; int[] secondHalf = new int[secondHalfLength]; System.arraycopy(list, list.length / 2, secondHalf, 0, secondHalfLength); mergeSort(secondHalf);   // Merge firstHalf with secondHalf merge(firstHalf, secondHalf, list); System.out.println("at the end of Mergesort: " +Arrays.toString(list)); } } public static void merge(int[] list1, int[] list2, int[] temp) { System.out.println("at the beginning of merge: " + Arrays.toString(list1) + ", " + Arrays.toString(list2) + ", " + Arrays.toString(temp)); int current1 = 0; // Current index in list1 int current2 = 0; // Current index in list2 int current3 = 0; // Current index in temp   while (current1 < list1.length && current2 < list2.length) { if (list1[current1] < list2[current2])   temp[current3++] = list1[current1++]; else temp[current3++] = list2[current2++]; } while (current1 < list1.length) temp[current3++] = list1[current1++]; while (current2 < list2.length) temp[current3++] = list2[current2++]; System.out.println("at the end of merge: " + Arrays.toString(temp)); }   /** Main method */ public static void main (String[] args) { int [] list = {5,2, 9,4,7, 8,6}; mergeSort(list); for (int i = 0; i < list.length; i++) System.out.print(list[i] + " "); }   }

Computer Networking: A Top-Down Approach (7th Edition)
7th Edition
ISBN:9780133594140
Author:James Kurose, Keith Ross
Publisher:James Kurose, Keith Ross
Chapter1: Computer Networks And The Internet
Section: Chapter Questions
Problem R1RQ
icon
Related questions
Question

Adjust the code to calculate Merge Sort run time. Populate the table above.

 

array size 10,000 100,000 1,000,000 10,000,000
worst        
best      

Code:

public class MergeSort {

 

public static void mergeSort(int[] list) {

System.out.println("at the beginning of Mergesort: " +Arrays.toString(list));

if (list.length > 1) {

 

// apply MergeSort on the first half

int[] firstHalf = new int[list.length / 2];

System.arraycopy(list, 0, firstHalf, 0, list.length / 2);

mergeSort(firstHalf);

 

// apply MergeSort on the second half

int secondHalfLength = list.length - list.length / 2;

int[] secondHalf = new int[secondHalfLength];

System.arraycopy(list, list.length / 2,

secondHalf, 0, secondHalfLength); mergeSort(secondHalf);

 

// Merge firstHalf with secondHalf

merge(firstHalf, secondHalf, list);

System.out.println("at the end of Mergesort: " +Arrays.toString(list));

}

}

public static void merge(int[] list1, int[] list2, int[] temp) {

System.out.println("at the beginning of merge: " + Arrays.toString(list1) + ", " +

Arrays.toString(list2) + ", " + Arrays.toString(temp));

int current1 = 0; // Current index in list1

int current2 = 0; // Current index in list2

int current3 = 0; // Current index in temp

 

while (current1 < list1.length && current2 < list2.length) {

if (list1[current1] < list2[current2])

 

temp[current3++] = list1[current1++];

else

temp[current3++] = list2[current2++];

}

while (current1 < list1.length) temp[current3++] = list1[current1++];

while (current2 < list2.length) temp[current3++] = list2[current2++];

System.out.println("at the end of merge: " + Arrays.toString(temp));

}

 

/** Main method */

public static void main (String[] args) {

int [] list = {5,2, 9,4,7, 8,6}; mergeSort(list);

for (int i = 0; i < list.length; i++)

System.out.print(list[i] + " "); }

 

}

Expert Solution
Step 1

Solution:

 

Given,

 

 

import java.util.*;

public class MergeSort {
  public static void mergeSort(int[] list) {

    System.out.println("at the beginning of Mergesort: " + Arrays.toString(list));

    if (list.length > 1) {

      // apply MergeSort on the first half

      int[] firstHalf = new int[list.length / 2];

      System.arraycopy(list, 0, firstHalf, 0, list.length / 2);

      mergeSort(firstHalf);

      // apply MergeSort on the second half

      int secondHalfLength = list.length - list.length / 2;

      int[] secondHalf = new int[secondHalfLength];

      System.arraycopy(list, list.length / 2,

        secondHalf, 0, secondHalfLength);
      mergeSort(secondHalf);

      // Merge firstHalf with secondHalf

      merge(firstHalf, secondHalf, list);

      System.out.println("at the end of Mergesort: " + Arrays.toString(list));

    }

  }

  public static void merge(int[] list1, int[] list2, int[] temp) {

    System.out.println("at the beginning of merge: " + Arrays.toString(list1) + ", " +

      Arrays.toString(list2) + ", " + Arrays.toString(temp));

    int current1 = 0; // Current index in list1

    int current2 = 0; // Current index in list2

    int current3 = 0; // Current index in temp

    while (current1 < list1.length && current2 < list2.length) {

      if (list1[current1] < list2[current2])

        temp[current3++] = list1[current1++];

      else

        temp[current3++] = list2[current2++];

    }

    while (current1 < list1.length) temp[current3++] = list1[current1++];

    while (current2 < list2.length) temp[current3++] = list2[current2++];

    System.out.println("at the end of merge: " + Arrays.toString(temp));

  }

  /** Main method */

  public static void main(String[] args) {

    int[] list = {
      5,
      2,
      9,
      4,
      7,
      8,
      6
    };
    mergeSort(list);

    for (int i = 0; i < list.length; i++)

      System.out.print(list[i] + " ");
  }

}

steps

Step by step

Solved in 3 steps with 1 images

Blurred answer
Knowledge Booster
Quicksort
Learn more about
Need a deep-dive on the concept behind this application? Look no further. Learn more about this topic, computer-engineering and related others by exploring similar questions and additional content below.
Similar questions
Recommended textbooks for you
Computer Networking: A Top-Down Approach (7th Edi…
Computer Networking: A Top-Down Approach (7th Edi…
Computer Engineering
ISBN:
9780133594140
Author:
James Kurose, Keith Ross
Publisher:
PEARSON
Computer Organization and Design MIPS Edition, Fi…
Computer Organization and Design MIPS Edition, Fi…
Computer Engineering
ISBN:
9780124077263
Author:
David A. Patterson, John L. Hennessy
Publisher:
Elsevier Science
Network+ Guide to Networks (MindTap Course List)
Network+ Guide to Networks (MindTap Course List)
Computer Engineering
ISBN:
9781337569330
Author:
Jill West, Tamara Dean, Jean Andrews
Publisher:
Cengage Learning
Concepts of Database Management
Concepts of Database Management
Computer Engineering
ISBN:
9781337093422
Author:
Joy L. Starks, Philip J. Pratt, Mary Z. Last
Publisher:
Cengage Learning
Prelude to Programming
Prelude to Programming
Computer Engineering
ISBN:
9780133750423
Author:
VENIT, Stewart
Publisher:
Pearson Education
Sc Business Data Communications and Networking, T…
Sc Business Data Communications and Networking, T…
Computer Engineering
ISBN:
9781119368830
Author:
FITZGERALD
Publisher:
WILEY