Academic Integrity: tutoring, explanations, and feedback — we don’t complete graded work or submit on a student’s behalf.

Java - Create 2 text files: input_10.txt(contains 10 random ints) and input_20.t

ID: 3757175 • Letter: J

Question

Java

- Create 2 text files: input_10.txt(contains 10 random ints) and input_20.txt (contains 20 random ints) . Implement quicksort on both files and show in output the sorted arrays and the time it took to sort them in nanoseconds. Please use the code I provided and revise it to get it working. Provide properly structured code back. Thanks

Here's my code that needs correction:


import java.io.IOException;
import java.nio.file.Files;
import java.nio.file.Paths;
import java.util.ArrayList;
import java.util.List;

// Java program for implementation of QuickSort
public class quickSort
{

private static final String filename = "input_10.txt";
private static final String filename2 = "input_20.txt";

private static List<Integer> quickSort = new ArrayList<>();

public static void QUICKSORT(int[]A,int p,int r)
{
if(p<r)
{
int q=PARTITION(A,p,r);
QUICKSORT(A,p,q-1);
QUICKSORT(A,q+1,r);
}
}

private static int PARTITION(int[] A, int p, int r) {
int x=A[r];
int i=p-1;
for(int j=p; j<=r-1; j++)
{
if(A[j]<=x)
{
i++;
int temp=A[i];
A[i]=A[j];
A[j]=temp;
}
}
int temp=A[i+1];
A[i+1]=A[r];
A[r]=temp;
return i+1;
}

public static void Quicksort(int []A,int p, int r)
{
if(p<r)
{
int N=r-p+1;
int m=Median3(A,p,p+N/2,r);
int temp=A[m];
A[m]=A[r];
A[r]=temp;
int q=PARTITION(A,p,r);
Quicksort(A,p,q-1);
Quicksort(A,q+1,r);

}
}

private static int Median3(int[] A, int p, int i, int r) {
int mid=(p+r+i)/3;
return A[mid];



// Driver program

public static void main(String args[])
{
quickSort test = new quickSort();
long startTime = System.nanoTime();
List<Integer> array = test.parseFile(filename);
test.quickSort(array);
long endTime = System.nanoTime();
long totalTime = endTime - startTime;
System.out.println("Time for 10 numbers: " + (double)totalTime/1000000000.0 + " seconds");
quickSort.clear();
startTime = System.nanoTime();
array = test.parseFile(filename2);
test.quickSort(array);
   endTime = System.nanoTime();
   totalTime = endTime - startTime;
System.out.println("Time for 20 numbers: " + (double)totalTime/1000000000.0 + " seconds");
heap.clear();



}
}

Explanation / Answer

If you have any doubts, please give me comment....

import java.io.*;

import java.util.*;

// Java program for implementation of QuickSort

class quickSort {

private static final String filename = "input_10.txt";

private static final String filename2 = "input_20.txt";

public void QUICKSORT(List<Integer> A, int p, int r) {

if (p < r) {

int q = PARTITION(A, p, r);

QUICKSORT(A, p, q - 1);

QUICKSORT(A, q + 1, r);

}

}

private static int PARTITION(List<Integer> A, int p, int r) {

int x = A.get(r);

int i = p - 1;

for (int j = p; j <= r - 1; j++) {

if (A.get(j) <= x) {

i++;

int temp = A.get(i);

A.set(i, A.get(j));

A.set(j, temp);

}

}

int temp = A.get(i + 1);

A.set(i + 1, A.get(r));

A.set(r, temp);

return i + 1;

}

public static void Quicksort(List<Integer> A, int p, int r) {

if (p < r) {

int N = r - p + 1;

int m = Median3(A, p, p + N / 2, r);

int temp = A.get(m);

A.set(m, A.get(r));

A.set(r, temp);

int q = PARTITION(A, p, r);

Quicksort(A, p, q - 1);

Quicksort(A, q + 1, r);

}

}

private static int Median3(List<Integer> A, int p, int i, int r) {

int mid = (p + r + i) / 3;

return A.get(mid);

}

public static List<Integer> parseFile(String filename){

List<Integer> list = new ArrayList<Integer>();

try{

Scanner in = new Scanner(new File(filename));

while(in.hasNextInt()){

list.add(in.nextInt());

}

}catch(FileNotFoundException e){

System.out.println("Unable to open file");

}

return list;

}

// Driver program

public static void main(String args[]) {

long startTime = System.nanoTime();

List<Integer> array = parseFile(filename);

Quicksort(array, 0, array.size()-1);

long endTime = System.nanoTime();

long totalTime = endTime - startTime;

System.out.println("Time for 10 numbers: " + (double) totalTime / 1000000000.0 + " seconds");

startTime = System.nanoTime();

array = parseFile(filename2);

Quicksort(array, 0, array.size()-1);

endTime = System.nanoTime();

totalTime = endTime - startTime;

System.out.println("Time for 20 numbers: " + (double) totalTime / 1000000000.0 + " seconds");

}

}

Hire Me For All Your Tutoring Needs
Integrity-first tutoring: clear explanations, guidance, and feedback.
Drop an Email at
drjack9650@gmail.com
Chat Now And Get Quote