Advertisement
Guest User

Untitled

a guest
Feb 20th, 2017
85
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 5.40 KB | None | 0 0
  1. import java.io.BufferedWriter;
  2. import java.io.File;
  3. import java.io.FileNotFoundException;
  4. import java.io.FileOutputStream;
  5. import java.io.IOException;
  6. import java.io.OutputStreamWriter;
  7. import java.util.ArrayList;
  8. import java.util.Collections;
  9. import java.util.Scanner;
  10.  
  11. public class SortMain {
  12.  
  13. public static void main(String[] args) {
  14. int numValues = 0;
  15. int numTrials = 0;
  16. boolean validAnswer = false;
  17. ArrayList<Integer> toSort = new ArrayList<Integer>();
  18. ArrayList<String> times = new ArrayList<String>();
  19. Scanner scan = new Scanner(System.in);
  20. System.out.println("Please enter the number of values to add to the test list: ");
  21. numValues = scan.nextInt();
  22. //System.out.println(numValues);
  23. for(int x = 1; x <= numValues; x++){
  24. toSort.add(x);
  25. }
  26. //System.out.println(toSort);
  27. System.out.println("Please enter the number of trials you would like to do: ");
  28. numTrials = scan.nextInt() + 50;
  29. while(validAnswer == false){
  30. System.out.println("Please enter which type of sort you would like to do (ins or sel): ");
  31. String sortType = scan.next();
  32. if(sortType.equals("ins")){
  33. scan.close();
  34. validAnswer = true;
  35. // System.out.println("Unsorted " + toSort);
  36. shuffle(toSort);
  37. // System.out.println("1st Shuffle " + toSort);
  38. insertionSort(toSort, numTrials, times);
  39. //averageTime(times, sortType, numValues);
  40. dataFileHandler(times, sortType, String.valueOf(numValues), String.valueOf(numTrials));
  41. }
  42. else if(sortType.equals("sel")){
  43. scan.close();
  44. validAnswer = true;
  45. //System.out.println("Unsorted " + toSort);
  46. shuffle(toSort);
  47. //System.out.println("1st Shuffle " + toSort);
  48. selectionSort(toSort, numTrials, times);
  49. //averageTime(times, sortType, numValues);
  50. dataFileHandler(times, sortType, String.valueOf(numValues), String.valueOf(numTrials));
  51. }
  52. else{
  53. System.out.println("Input not recognized, please enter ins or sel");
  54. }
  55. }
  56. }
  57. public static void shuffle(ArrayList<Integer> arrayList){
  58. Collections.shuffle(arrayList);
  59. }
  60. public static void selectionSort(ArrayList<Integer> numbers, int trials, ArrayList<String> times){
  61. int min, temp;
  62. double totalTime = 0;
  63. for(int y = 0; y < trials; y++){
  64. for (int index = 0; index < numbers.size()-1; index++)
  65. {
  66. long startTime = System.nanoTime();
  67. min = index;
  68. for (int scan = index+1; scan < numbers.size(); scan++)
  69. if (numbers.get(scan) < numbers.get(min))
  70. min = scan;
  71.  
  72. // Swap the values
  73. temp = numbers.get(min);
  74. numbers.set(min, numbers.get(index));
  75. numbers.set(index, temp);
  76. long endTime = System.nanoTime();
  77. totalTime += (endTime - startTime);
  78. }
  79. //System.out.println("Selection Sorted " + numbers);
  80. shuffle(numbers);
  81. // System.out.println("Post-Sort Reshuffle " + numbers);
  82. times.add((totalTime/1000000) + "");
  83. totalTime = 0;
  84. System.out.println(y);
  85. }
  86. }
  87. //broken atm
  88. public static void insertionSort(ArrayList<Integer> numbers, int trials, ArrayList<String> times){
  89. // System.out.println(numbers);
  90. double totalTime = 0;
  91. for(int y = 0; y < trials; y++){
  92. for(int x = 1; x < numbers.size(); x++){
  93. long startTime = System.nanoTime();
  94. int j = x;
  95. int temp = numbers.get(j);
  96. while(j > 0 && numbers.get(j-1) > temp){
  97. numbers.set(j, numbers.get(j-1));
  98. j--;
  99. }
  100. if(j != x){
  101. numbers.set(j, temp);
  102. }
  103. long endTime = System.nanoTime();
  104. totalTime += (endTime - startTime);
  105. }
  106. times.add((totalTime/1000000 + ""));
  107. totalTime = 0;
  108. // System.out.println(numbers);
  109. shuffle(numbers);
  110. // System.out.println(numbers);
  111. }
  112. }
  113. public static void averageTime(ArrayList<String> times, String sortType, int n){
  114. double total = 0;
  115. for(int x = 50; x < times.size(); x++){
  116. total += Double.parseDouble(times.get(x));
  117. }
  118. double average = total / (double)times.size();
  119. System.out.println("Average runtime over " + times.size() + " trials of " + n + " values using " + sortType + " sorting = " + average + " ms");
  120. }
  121. public static void dataFileHandler(ArrayList<String> times, String sortType, String n, String trials){
  122. File timesTxt = new File("timesList_" + sortType + "_" + n + "num_" + String.valueOf(Integer.parseInt(trials) - 50) + "trials.txt");
  123. try {
  124. timesTxt.createNewFile();
  125. } catch (IOException e) {
  126. // TODO Auto-generated catch block
  127. e.printStackTrace();
  128. }
  129. try {
  130. BufferedWriter writer = new BufferedWriter(new OutputStreamWriter(new FileOutputStream("timesList_" + sortType + "_" + n + "num_" + String.valueOf(Integer.parseInt(trials) - 50) + "trials.txt")));
  131. try {
  132. writer.write("Num values " + n);
  133. writer.newLine();
  134. writer.write("Num trials " + (times.size() - 50));
  135. writer.newLine();
  136. writer.write("Sort Type " + sortType);
  137. for(int x = 50; x < times.size(); x++){
  138. writer.newLine();
  139. writer.write(n + " " + times.get(x));
  140. }
  141. writer.close();
  142. } catch (IOException e) {
  143. // TODO Auto-generated catch block
  144. e.printStackTrace();
  145. }
  146. } catch (FileNotFoundException e) {
  147. // TODO Auto-generated catch block
  148. e.printStackTrace();
  149. }
  150. System.out.println("File generated at: " + timesTxt.getAbsolutePath());
  151. }
  152. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement