Advertisement
Guest User

Untitled

a guest
Apr 27th, 2017
74
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.42 KB | None | 0 0
  1. package codesquad;
  2.  
  3. import java.util.Random;
  4.  
  5. public class MySort {
  6.  
  7. public long start;
  8. public void start() {
  9. start = System.currentTimeMillis();
  10. }
  11.  
  12. public void end(String str) {
  13. long time = System.currentTimeMillis() - start;
  14. System.out.println(str + "time (ms):" + time);
  15.  
  16. }
  17.  
  18. public int[] genArray(int size, boolean is_ordered) {
  19. int[] arr = new int[size];
  20. for (int i = 0; i < arr.length; i++) {
  21. arr[i] = i * 2 + 1;
  22. }
  23. if (is_ordered)
  24. return arr;
  25. shuffle(arr);
  26. return arr;
  27. }
  28.  
  29. public void shuffle(int[] arr) {
  30. Random r = new Random();
  31. int randomIdx;
  32. for (int idx = arr.length - 1; idx > 0; idx--) {
  33. randomIdx = r.nextInt(idx + 1);
  34. swap(arr, randomIdx, idx);
  35. }
  36. }
  37.  
  38. public void insertionSort(int[] arr) {
  39. for(int index = 1 ; index < arr.length ; index++){
  40. int temp = arr[index];
  41. int aux = index - 1;
  42.  
  43. while( (aux >= 0) && ( arr[aux] > temp) ) {
  44. arr[aux+1] = arr[aux];
  45. aux--;
  46. }
  47. arr[aux + 1] = temp;
  48. }
  49. }
  50.  
  51. public void print(int[] array) {
  52. StringBuffer sb = new StringBuffer();
  53. sb.append("[");
  54. for(int i: array) {
  55. sb.append(i + ", ");
  56. }
  57. sb.append("]");
  58. System.out.println(sb.toString());
  59. }
  60.  
  61. public void qsort(int[] array) {
  62. _qsort(array, 0, array.length - 1);
  63. }
  64.  
  65. public void _qsort(int[] array, int left, int right) {
  66. int pivotIndex = (left + right) / 2;
  67.  
  68. if (right > left) {
  69. pivotIndex = partition(array, left, right, pivotIndex);
  70. _qsort(array, left, pivotIndex - 1);
  71. _qsort(array, pivotIndex + 1, right);
  72. }
  73. }
  74.  
  75.  
  76. public int partition(int[] array, int left, int right, int pivotIndex) {
  77. int pivot = array[pivotIndex];
  78. swap(array, pivotIndex, right);
  79. int retIndex = left;
  80. for (int i = left; i < right; i++){
  81. if (array[i] <= pivot) {
  82. swap(array, retIndex, i);
  83. retIndex++;
  84. }
  85. }
  86. swap(array, right, retIndex);
  87. return retIndex;
  88. }
  89.  
  90. public void swap(int []arr, int idx1, int idx2) {
  91. int temp = arr[idx1];
  92. arr[idx1] = arr[idx2];
  93. arr[idx2] = temp;
  94. }
  95.  
  96. public static void main(String[] args) {
  97. int size = 1000000;
  98. MySort m = new MySort();
  99. int[] array = m.genArray(size, false);
  100. //m.print(array);
  101.  
  102. //insertion sort
  103. m.start();
  104. m.insertionSort(array);
  105. m.end("Insertion Sort");
  106. //m.print(array);
  107.  
  108. //quick sort
  109. //m.shuffle(array);
  110. m.start();
  111. m.qsort(array);
  112. m.end("Quick Sort");
  113. //m.print(array);
  114.  
  115. }
  116.  
  117. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement