Statistics homework help

Statistics homework help. Please improve the java code to be able to compile successfully. Below please find the 3 class codes.Provide the improved Sort, MergeSort, and SortTest java codes that successfully compile and run.Here is the Sort.java code:import java.io.BufferedReader;import java.io.File;import java.io.FileReader;import java.io.IOException;import java.util.ArrayList;public class Sort extends Thread{    /** You are to implement this method. The method should invoke one or      * more threads to read and sort the data from the collection of Files.      * The method should return a sorted list of all of the String data      * contained in the files      * @param file       * @ return       * @tgrows IOException    */        public static String[] threadedSort(File[] files) throws IOException{        //commenting out to ue the multithread        /*throw new java.lang.IllegalStateException(“Method not implemented”); */        String[] sortedData = new String[0];                Thread t = new Thread(new Runnable(){            public void run(){                try{                for(File file : files){                    String[] data = getData(file);                    data = MergeSort.mergeSort(data);                    sortedData = MergeSort.merge(sortedData, data);                }              } catch(IllegalStateException e){                  System.out.println(“Message: ” + e.getMessage());              }            }        });        t.start();                return sortedData;    }        /**     * Given an array of files, this method will return a sorted      * list of the String data contained in each of the files.     * @param files the files to be read      * @return the sorted data     * @throws IOException thrown if any errors occur reading the file    */    public static String[] sort(File[] files) throws IOException{        String[] sortedData = new String[0];                for(File file : files){            String[] data = getData(file);            data = MergeSort.mergeSort(data);            sortedData = MergeSort.merge(sortedData, data);        }                return sortedData;    }        /**     * This method will read in the string data from the specified      * file and return the data as an array of the String objects     * @param file the file containing the String data     * @return String array containing the String data     * @throws IOException thrown if any errors occur reading the file      */    private static String[] getData(File file) throws IOException{        ArrayList data = new ArrayList();        BufferedReader in = new BufferedReader(new FileReader(file));                //Read the data from file until the end of file is reached         while(true){            String line = in.readLine();            if(line == null){                //the end of the file was reached                break;            }else{                data.add(line);            }        }                //close the input stream and return the data         in.close();                return data.toArray(new String[0]);    }    }Here is the MergeSort.java:public class MergeSort {    // The mergeSort method returns a sorted copy of the  // String objects contained in the String array data.  /**   * Sorts the String objects using the merge sort algorithm.   *    * @param data the String objects to be sorted   * @return the String objects sorted in ascending order   */  public static String[] mergeSort(String[] data) {    if (data.length > 1) {      String[] left = new String[data.length / 2];      String[] right = new String[data.length – left.length];      System.arraycopy(data, 0, left, 0, left.length);      System.arraycopy(data, left.length, right, 0, right.length);          left = mergeSort(left);      right = mergeSort(right);          return merge(left, right);          }    else {      return data;    }      }    /**   * The merge method accepts two String arrays that are assumed   * to be sorted in ascending order. The method will return a   * sorted array of String objects containing all String objects   * from the two input collections.   *    * @param left a sorted collection of String objects   * @param right a sorted collection of String objects   * @return a sorted collection of String objects   */  public static String[] merge(String[] left, String[] right) {        String[] data = new String[left.length + right.length];        int lIndex = 0;    int rIndex = 0;        for (int i=0; i 0) {        System.out.println(“The data returned by Sort.sort is not sorted.”);        throw new java.lang.IllegalStateException(“The data returned by Sort.sort is not sorted”);      }    }    System.out.println(“The data returned by Sort.sort is sorted.”);    System.out.println(“Sort.sort took ” + elapsedTime + ” seconds to read and sort the data.”);        // Run Sort.threadedSort on the files and test to ensure the data is sorted    startTime = System.nanoTime();    // Commenting out    /*String[] threadSortedData = Sort.threadedSort(files);    stopTime = System.nanoTime();    double threadedElapsedTime = (stopTime – startTime)/ 1000000000.0;        // Test to ensure the data is sorted    if (sortedData.length != threadSortedData.length) {      System.out.println(“The data return by Sort.threadedSort is missing data”);      throw new java.lang.IllegalStateException(“The data returned by Sort.threadedSort is not sorted”);    }    for (int i=0; i 0) {        System.out.println(“The data return by Sort.threadedSort is not sorted”);        throw new java.lang.IllegalStateException(“The data returned by Sort.threadedSort
is not sorted”);      }    }    System.out.println(“The data returned by Sort.threadedSort is sorted.”);    System.out.println(“Sort.threadedSort took ” + threadedElapsedTime + ” seconds to read and sort the data.”);          }  } */

Statistics homework help