Advertisement
djemm1996

Untitled

Feb 23rd, 2017
73
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 4.76 KB | None | 0 0
  1. import java.util.Scanner;
  2. import java.lang.System;
  3. public class Ld_test {
  4.  
  5. public static void firstMethod(int[] a) { //1.metode - uzlabota ieklausanas metode
  6. long startTime = System.nanoTime();
  7. int b[] = new int[2 * a.length - 1];
  8. int l = a.length - 1;
  9. int r = l;
  10. b[r] = a[0];
  11.  
  12. for (int i = 1; i < a.length; i++) {
  13. if (b[l] >= a[i]) {
  14. l--;
  15. b[l] = a[i];
  16. } else if
  17. (b[r] <= a[i]) {
  18. r++;
  19. b[r] = a[i];
  20. }
  21. else
  22. {
  23. int j;
  24. for (j = l; j <= r; j++) {
  25.  
  26. if (a[i] <= b[j])
  27. break;
  28. }
  29. if (j - l < r - j) {
  30. for (int k = l; k <= j - 1; k++)
  31. b[k - 1] =b[k];
  32. l--;
  33. b[j - 1] = a[i];
  34. }
  35. else
  36. {
  37. for (int k = r; k >= j; k--)
  38. b[k + 1] = b[k];
  39. r++;
  40. b[j] = a[i];
  41. }
  42. }
  43. }
  44.  
  45. for (int i = 0; i < a.length; i++) {
  46. a[i] = b[l];
  47. l++;
  48.  
  49. }
  50. long estimatedTime = System.nanoTime() - startTime;
  51. System.out.println("t=" + estimatedTime);
  52.  
  53. }
  54.  
  55.  
  56.  
  57. public static void secondMethod(int[] a) { //2.metode - Hoara bez rekursijas
  58. long startTime = System.nanoTime();
  59. int left[] = new int[a.length / 2];
  60. int right[] = new int[a.length / 2];
  61.  
  62. short p = 0;
  63.  
  64. int stackpos = 1;
  65. int m = 0, l = 0, r = 0 ,i = 0, j = 0;
  66.  
  67. left[0] = 0;
  68. right[0] = a.length - 1;
  69. p = 3;
  70. do {
  71. switch (p) {
  72.  
  73. case 3:
  74. stackpos -= 1;
  75. l = left[stackpos];
  76. r = right[stackpos];
  77. p = 4;
  78. break;
  79.  
  80. case 4:
  81. m = (a[l] + a[r]) / 2;
  82. i = l;
  83. j = r;
  84. p = 6;
  85. break;
  86.  
  87. case 6:
  88.  
  89. while (a[i] < m) i++;
  90. while (a[j] > m) j--;
  91. if (i <= j) {
  92. int temp = a[i];
  93. a[i] = a[j];
  94. a[j] = temp;
  95. i++;
  96. j--;
  97. }
  98.  
  99. if (i <= j) {
  100. p = 6;
  101. break;
  102. }
  103.  
  104. if (i < r) {
  105. left[stackpos] = i;
  106. right[stackpos] = r;
  107. stackpos += 1;
  108. }
  109. r = j;
  110. if (l < r) {
  111. p = 4;
  112. break;
  113. }
  114. if (stackpos > 0) {
  115. p = 3;
  116. break;
  117. } else p = 1;
  118. break;
  119. }
  120. } while (p != 1);
  121. long estimatedTime = System.nanoTime() - startTime;
  122. System.out.println("t=" + estimatedTime);
  123. return;
  124. }
  125.  
  126.  
  127.  
  128.  
  129.  
  130. public static void main(String[] args) { //3.daļa - masīva izvade
  131.  
  132. int numurs;
  133.  
  134. int metode;
  135. System.out.println("Anete Brenčuka RDBF0 161RDB155");
  136. System.out.print("method: ");
  137.  
  138. Scanner sc = new Scanner(System.in);
  139. if (sc.hasNextInt()){
  140. numurs = sc.nextInt();
  141. }
  142. else
  143. {
  144. System.out.println("input-output error");
  145. sc.close();
  146. return;
  147. }
  148.  
  149. if (numurs != 1 && numurs != 2) {
  150. System.out.println("input-output error");
  151. sc.close();
  152. return;
  153. }
  154.  
  155.  
  156.  
  157. System.out.print("count: ");
  158. if (sc.hasNextInt())
  159. metode = sc.nextInt();
  160.  
  161. else {
  162. System.out.println("input-output error");
  163. sc.close();
  164. return;
  165. }
  166.  
  167.  
  168. int a[] = new int[metode];
  169.  
  170. System.out.println("items: ");
  171.  
  172. for (int i = 0; i < a.length; i++) {
  173.  
  174. if (sc.hasNextInt())
  175. a[i] = sc.nextInt();
  176.  
  177. else {
  178. System.out.println("input-output error");
  179. sc.close();
  180. return;
  181. }
  182. }
  183. sc.close();
  184.  
  185. switch (numurs) {
  186.  
  187. case 1: firstMethod(a);
  188. break;
  189. case 2: secondMethod(a);
  190. break;
  191.  
  192. default:
  193. System.out.println("input-output error");
  194. return;
  195. }
  196. System.out.println("sorted: ");
  197.  
  198. for (int i = 0; i < a.length; i++)
  199. System.out.print(a[i] + " ");
  200. }
  201. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement