Advertisement
Guest User

Untitled

a guest
Mar 3rd, 2015
209
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.69 KB | None | 0 0
  1. private static ArrayList<String> cities = new ArrayList<String>();;
  2.  
  3. public static void main(String[] args) throws FileNotFoundException
  4. {
  5. long elapsed, start, end;
  6. File file = new File("cities.txt");
  7. Scanner reader = new Scanner(file);
  8. HashMap<String, String> data = new HashMap<String, String>();
  9.  
  10. while (reader.hasNext())
  11. {
  12. String line = reader.nextLine();
  13. int space = line.lastIndexOf(' ', line.lastIndexOf(' ') - 1);
  14. String city = line.substring(0, space);
  15. String state_pop = line.substring(space + 1);
  16. //for (int i = 0; i < 1000; i++)
  17. //{
  18. data.put(city, state_pop);
  19. cities.add(city);
  20. //}
  21. }
  22. // Unsorted
  23. // System.out.print("Unsorted: ");
  24. // for (int i = 0; i < cities.size(); i++)
  25. // System.out.print(cities.get(i) + "|");
  26. start = System.currentTimeMillis();
  27. sort();
  28. end = System.currentTimeMillis();
  29. elapsed = end - start;
  30.  
  31. // System.out.print("nQuickSort: ");
  32. // for (int k = 0; k < cities.size(); k++)
  33. // System.out.print(cities.get(k) + "|");
  34. System.out.println("nQuikcSort time Elapsed: " + elapsed);
  35. }
  36.  
  37. public static void sort()
  38. {
  39. int left = 0;
  40. int right = cities.size() - 1;
  41. quickSort (left, right);
  42. }
  43.  
  44. private static void quickSort(int left, int right)
  45. {
  46. if (left >= right)
  47. return;
  48. String pivot = getMedian(left, right);
  49. int partition = partition(left, right, pivot);
  50. quickSort(0, partition - 1);
  51. quickSort(partition + 1, right);
  52. }
  53.  
  54. private static int partition(int left, int right, String pivot)
  55. {
  56. int leftCursor = left - 1;
  57. int rightCursor = right;
  58. while (leftCursor < rightCursor)
  59. {
  60. while (((Comparable<String>) cities.get(++leftCursor)).compareTo(pivot) < 0);
  61. while (rightCursor > 0
  62. && ((Comparable<String>) cities.get(--rightCursor)).compareTo(pivot) > 0);
  63. if (leftCursor >= rightCursor)
  64. break;
  65. else
  66. swap(leftCursor, rightCursor);
  67. }
  68. swap(leftCursor, right);
  69. return leftCursor;
  70. }
  71.  
  72. public static String getMedian(int left, int right)
  73. {
  74. int center = (left + right) / 2;
  75. if (((Comparable<String>) cities.get(left)).compareTo(cities.get(center)) > 0)
  76. swap(left, center);
  77. if (((Comparable<String>) cities.get(left)).compareTo(cities.get(right)) > 0)
  78. swap(left, right);
  79. if (((Comparable<String>) cities.get(center)).compareTo(cities.get(right)) > 0)
  80. swap(center, right);
  81. swap(center, right);
  82. return cities.get(right);
  83. }
  84.  
  85. public static void swap(int left, int right)
  86. {
  87. String temp = cities.get(left);
  88. cities.set(left, cities.get(right));
  89. cities.set(right, temp);
  90. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement