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");
}
}
Related Questions
drjack9650@gmail.com
Navigate
Integrity-first tutoring: explanations and feedback only — we do not complete graded work. Learn more.