Advertisement
Guest User

Untitled

a guest
Feb 3rd, 2018
151
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.43 KB | None | 0 0
  1. public class Ld1171rdb045 {
  2. static int[] a, b;
  3. static int c, l, r, i, j, N;
  4.  
  5. static Scanner input = new Scanner(System.in);
  6.  
  7. public static void main(String[] args) {
  8.  
  9. }
  10.  
  11. public static void firstMethod(int[] a) {
  12.  
  13. System.out.println("The amount of elements in the array A.");
  14. N = input.nextInt(); // N IS THE AMOUNT OF ELEMENTS IN THE ARRAY A
  15.  
  16. a = new int[N];
  17.  
  18. System.out.println("The values of the array A.");
  19.  
  20. for (i = 0; i < a.length; i++) { // FILLING THE ARRAY A WITH VALUES
  21. a[i] = input.nextInt();
  22. }
  23.  
  24. input.close();
  25. System.out.println(Arrays.toString(a)); // PRINTING OUT THE ARRAY A TO CHECK
  26.  
  27. b = new int[2 * N - 1]; // CREATING TWICE BIGGER[-1] ARRAY B
  28.  
  29. l = N - 1; // ASSIGNING AS A MIDDLE ELEMENT
  30. r = N - 1; // ASSIGNING AS A MIDDLE ELEMENT
  31.  
  32. b[r] = a[0]; // THE FIRST VALUE OF THE ARRAY B IS NOW IN THE MIDDLE OF THE ARRAY B
  33.  
  34. for (i = 1; i < N; i++) { // LOOP THROUGH THE ARRAY
  35.  
  36. if (b[l] > a[i]) { // IF THE LEFT VALUE IS BIGGER THAN a[i] THEN DECREMENT LEFT AND ASSIGN a[i] TO THE LEFT VALUE
  37. l--;
  38. b[l] = a[i];
  39.  
  40. } else if (b[r] < a[i]) { // IF THE LEFT VALUE IS BIGGER THAN a[i] THEN INCREMENT RIGHT AND ASSIGN a[i] TO THE RIGHT VALUE
  41.  
  42. r++;
  43. b[r] = a[i];
  44. } else { // ( I GUESS THE PROBLEM IS HERE)
  45.  
  46. for (j = l; j < r; j++) { // LOOP THROUGH THE ARRAY B
  47. if (b[j] >= a[i]) { // IF THE LEFT VALUE IS BIGGER THAN a[i]
  48.  
  49. if (j - l <= r - j) { IF THERE ARE LESS ELEMENTS ON THE LEFT SIDE
  50.  
  51. for (int k = b[l]; k <= b[j - 1]; k++) { // SHIFT ALL ELEMENTS ONE POSITION TO THE LEFT
  52. b[k - 1] = b[k];
  53. }
  54. l--;
  55. b[j - 1] = a[i];
  56. }
  57.  
  58. if (j - l >= r - j) { IF THERE ARE LESS ELEMENTS ON THE RIGHT SIDE
  59. for (int k = b[r]; k >= b[j]; k--) { // SHIFT ALL ELEMENTS ONE POSITION TO THE RIGHT
  60. b[k + 1] = b[k];
  61. }
  62. r++;
  63. b[j] = a[i];
  64.  
  65. }
  66. }
  67. }
  68.  
  69. if (b[j] <= a[i]) { // NOT SURE IF THIS ONE IS EVEN NEEDED BUT BASICALLY DO THE SAME THING IF VALUE IS SMALLER THAN a[i]
  70. if (j - l <= r - j) {
  71.  
  72. for (int k = b[l]; k <= b[j - 1]; k++) {
  73. b[k - 1] = b[k];
  74. }
  75. l--;
  76. b[j - 1] = a[i];
  77. }
  78.  
  79. if (j - l >= r - j) {
  80. for (int k = b[r]; k >= b[j]; k--) {
  81. b[k + 1] = b[k];
  82. }
  83. r++;
  84. b[j] = a[i];
  85.  
  86. }
  87. }
  88. }
  89. }
  90.  
  91. System.out.println(Arrays.toString(b)); // PRINT OUT THE ARRAY B
  92.  
  93. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement