Not a member of Pastebin yet?
                        Sign Up,
                        it unlocks many cool features!                    
                - import java.io.BufferedWriter;
 - import java.io.File;
 - import java.io.FileNotFoundException;
 - import java.io.FileOutputStream;
 - import java.io.IOException;
 - import java.io.OutputStreamWriter;
 - import java.util.ArrayList;
 - import java.util.Collections;
 - import java.util.Scanner;
 - public class SortMain {
 - public static void main(String[] args) {
 - int numValues = 0;
 - int numTrials = 0;
 - boolean validAnswer = false;
 - ArrayList<Integer> toSort = new ArrayList<Integer>();
 - ArrayList<String> times = new ArrayList<String>();
 - Scanner scan = new Scanner(System.in);
 - System.out.println("Please enter the number of values to add to the test list: ");
 - numValues = scan.nextInt();
 - //System.out.println(numValues);
 - for(int x = 1; x <= numValues; x++){
 - toSort.add(x);
 - }
 - //System.out.println(toSort);
 - System.out.println("Please enter the number of trials you would like to do: ");
 - numTrials = scan.nextInt() + 50;
 - while(validAnswer == false){
 - System.out.println("Please enter which type of sort you would like to do (ins or sel): ");
 - String sortType = scan.next();
 - if(sortType.equals("ins")){
 - scan.close();
 - validAnswer = true;
 - // System.out.println("Unsorted " + toSort);
 - shuffle(toSort);
 - // System.out.println("1st Shuffle " + toSort);
 - insertionSort(toSort, numTrials, times);
 - //averageTime(times, sortType, numValues);
 - dataFileHandler(times, sortType, String.valueOf(numValues), String.valueOf(numTrials));
 - }
 - else if(sortType.equals("sel")){
 - scan.close();
 - validAnswer = true;
 - //System.out.println("Unsorted " + toSort);
 - shuffle(toSort);
 - //System.out.println("1st Shuffle " + toSort);
 - selectionSort(toSort, numTrials, times);
 - //averageTime(times, sortType, numValues);
 - dataFileHandler(times, sortType, String.valueOf(numValues), String.valueOf(numTrials));
 - }
 - else{
 - System.out.println("Input not recognized, please enter ins or sel");
 - }
 - }
 - }
 - public static void shuffle(ArrayList<Integer> arrayList){
 - Collections.shuffle(arrayList);
 - }
 - public static void selectionSort(ArrayList<Integer> numbers, int trials, ArrayList<String> times){
 - int min, temp;
 - double totalTime = 0;
 - for(int y = 0; y < trials; y++){
 - for (int index = 0; index < numbers.size()-1; index++)
 - {
 - long startTime = System.nanoTime();
 - min = index;
 - for (int scan = index+1; scan < numbers.size(); scan++)
 - if (numbers.get(scan) < numbers.get(min))
 - min = scan;
 - // Swap the values
 - temp = numbers.get(min);
 - numbers.set(min, numbers.get(index));
 - numbers.set(index, temp);
 - long endTime = System.nanoTime();
 - totalTime += (endTime - startTime);
 - }
 - //System.out.println("Selection Sorted " + numbers);
 - shuffle(numbers);
 - // System.out.println("Post-Sort Reshuffle " + numbers);
 - times.add((totalTime/1000000) + "");
 - totalTime = 0;
 - System.out.println(y);
 - }
 - }
 - //broken atm
 - public static void insertionSort(ArrayList<Integer> numbers, int trials, ArrayList<String> times){
 - // System.out.println(numbers);
 - double totalTime = 0;
 - for(int y = 0; y < trials; y++){
 - for(int x = 1; x < numbers.size(); x++){
 - long startTime = System.nanoTime();
 - int j = x;
 - int temp = numbers.get(j);
 - while(j > 0 && numbers.get(j-1) > temp){
 - numbers.set(j, numbers.get(j-1));
 - j--;
 - }
 - if(j != x){
 - numbers.set(j, temp);
 - }
 - long endTime = System.nanoTime();
 - totalTime += (endTime - startTime);
 - }
 - times.add((totalTime/1000000 + ""));
 - totalTime = 0;
 - // System.out.println(numbers);
 - shuffle(numbers);
 - // System.out.println(numbers);
 - }
 - }
 - public static void averageTime(ArrayList<String> times, String sortType, int n){
 - double total = 0;
 - for(int x = 50; x < times.size(); x++){
 - total += Double.parseDouble(times.get(x));
 - }
 - double average = total / (double)times.size();
 - System.out.println("Average runtime over " + times.size() + " trials of " + n + " values using " + sortType + " sorting = " + average + " ms");
 - }
 - public static void dataFileHandler(ArrayList<String> times, String sortType, String n, String trials){
 - File timesTxt = new File("timesList_" + sortType + "_" + n + "num_" + String.valueOf(Integer.parseInt(trials) - 50) + "trials.txt");
 - try {
 - timesTxt.createNewFile();
 - } catch (IOException e) {
 - // TODO Auto-generated catch block
 - e.printStackTrace();
 - }
 - try {
 - BufferedWriter writer = new BufferedWriter(new OutputStreamWriter(new FileOutputStream("timesList_" + sortType + "_" + n + "num_" + String.valueOf(Integer.parseInt(trials) - 50) + "trials.txt")));
 - try {
 - writer.write("Num values " + n);
 - writer.newLine();
 - writer.write("Num trials " + (times.size() - 50));
 - writer.newLine();
 - writer.write("Sort Type " + sortType);
 - for(int x = 50; x < times.size(); x++){
 - writer.newLine();
 - writer.write(n + " " + times.get(x));
 - }
 - writer.close();
 - } catch (IOException e) {
 - // TODO Auto-generated catch block
 - e.printStackTrace();
 - }
 - } catch (FileNotFoundException e) {
 - // TODO Auto-generated catch block
 - e.printStackTrace();
 - }
 - System.out.println("File generated at: " + timesTxt.getAbsolutePath());
 - }
 - }
 
Advertisement
 
                    Add Comment                
                
                        Please, Sign In to add comment