Advertisement
Guest User

Массивы

a guest
Jan 21st, 2018
76
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 13.51 KB | None | 0 0
  1. import java.util.Random;
  2.  
  3.  
  4. //Массивы и всякое с ними связанное
  5.  
  6.  
  7. public class Main {
  8.  
  9.     public static void main(String[] args) {
  10.         int []ar = new int [10];
  11.         System.out.println("At the start");
  12.         printList(ar);
  13.         System.out.println("Fill array");
  14.         fillArray(ar, -10, 10);
  15.         printList(ar);
  16.        
  17.         Shift(ar, 10);
  18.         System.out.println("Shift");
  19.         printList(ar);
  20.        
  21.         int [] rr = TwoMinIndex(ar);
  22.         System.out.println("Min1 = " + ar[rr[0]] + "(" + rr[0] + ")");
  23.         System.out.println("Min2 = " + ar[rr[1]] + "(" + rr[1] + ")");
  24.        
  25.        
  26.         int [] some = {1, 3, 5, 0, 8, 2, -5, -1, -4, 1};
  27. //      if(isUnique(some)) {
  28. //          System.out.println("There aren't duplication");
  29. //          printList(some);
  30. //      }
  31.         System.out.println("Before");
  32.         printList(some);
  33.         System.out.println("Agregatic order");
  34.         AgregatikOrder(some);
  35.         printList(some);
  36. //      SwapMinMax(ar, 0);
  37. //      System.out.println("Swap Min and max");
  38. //      printList(ar);
  39.        
  40.        
  41. //      int [] res = deleteDuplicates(ar);
  42. //      System.out.println("DeleteDuplicates");
  43. //      printList(res);
  44.        
  45. //      System.out.println("Reverse betveen 1");
  46. //      ReverseBetween(ar, 1);
  47. //      printList(ar);
  48. //      System.out.println("Selection sort");
  49. //      SelectionSort(ar);
  50. //      printList(ar);
  51. //      midSwap(ar);
  52. //      System.out.println("Mid Swap");
  53. //      printList(ar);
  54. //      System.out.println("MinMaxRevers");
  55. //      int min = MinIndex(ar);
  56. //      System.out.println("Min = " + ar[min] + "(" + min + ")");
  57. //      int max = MaxIndex(ar);
  58. //      System.out.println("Min = " + ar[max] + "(" + max + ")");
  59. //      MinMaxRevers(ar);
  60. //      printList(ar);
  61. //
  62.         System.out.println("-------------------------");
  63.         int len = 50;
  64.         char []ChAr = new char [len];
  65.         System.out.println("At the start");
  66.         printList(ChAr);
  67.         fillCharArray(ChAr);
  68.         System.out.println("Filling array");
  69.         printList(ChAr);
  70.         char x = getRandomAlphaNum();
  71.         frequency(ChAr, x);
  72.         System.out.println("\nAfter all 'a' puts '!='");
  73.         printArrayWith(ChAr, 'a', "!=");
  74.        
  75.         Shift(ChAr, -10);
  76.         System.out.println("\nShift");
  77.         printList(ChAr);
  78.        
  79.        
  80.     }
  81.    
  82.    
  83. //ПРОСТЕ ЧИСЛО
  84.     public static boolean Prime(int val) {
  85.         if(val <= 1) return false;
  86.         boolean isPrime = true;
  87.         for(int i = 2; i <= Math.sqrt(val) && isPrime; i++) {
  88.             if(val % i == 0) isPrime = false;
  89.         }
  90.         return isPrime;
  91.     }
  92.  
  93.  
  94.    
  95. //Вывод
  96.         private static void printList(int [] array) {
  97.             if(array.length == 0) {
  98.                 System.out.println("Your Array is empty.");
  99.             }else {
  100.                 for(int i = 0; i < array.length; i++) {
  101.                     System.out.printf(array[i] + "   ");
  102.                 }
  103.             }
  104.             System.out.println("");
  105.         }
  106.        
  107.        
  108. // Заполнение массива
  109. // if from == to == X, array will be filled by X
  110.         private static void fillArray(int [] array, int from, int to) {
  111.             if(to < from) {
  112.                 int tmp = to;
  113.                 to = from;
  114.                 from = tmp;
  115.             }
  116.             Random rand = new Random();
  117.             for (int i = 0; i < array.length; i++) {
  118.                 array[i] = rand.nextInt(to - from + 1) + from;
  119.             }
  120.         }
  121.        
  122. //Two Sum
  123.         public static int[] twoSum(int[] nums, int target) {
  124.             for (int i = 0; i < nums.length; i++) {
  125.                 for (int j = i + 1; j < nums.length; j++) {
  126.                     if (nums[j] == target - nums[i]) {
  127.                         return new int[] { i, j };
  128.                     }
  129.                 }
  130.             }
  131.             throw new IllegalArgumentException("No two sum solution");
  132.         }
  133.        
  134. //Pivot index
  135.         public int pivotIndex(int[] nums) {
  136.             int right = 0;
  137.             int left = 0;
  138.             for(int i = 0; i < nums.length; i++){
  139.                 right += nums[i];
  140.             }
  141.             for(int i = 0; i < nums.length; i++){
  142.                 if(i != 0){
  143.                     left += nums[i-1];
  144.                 }
  145.                 right -= nums[i];
  146.                 if(right == left){
  147.                     return i;
  148.                 }
  149.             }
  150.             return -1;
  151.         }
  152.  
  153. //Затирание элемента
  154.         public static void rub(int [] ar, int i)  {
  155.             while(i < ar.length - 1) {
  156.                 ar[i] = ar[i+1];
  157.                 i++;
  158.             }
  159.         }
  160.        
  161. //удаление повторок
  162.         public static int [] deleteDuplicates(int [] ar) {
  163.             SelectionSort(ar);
  164.             int len = ar.length;
  165.             for(int i = 0; i < len; i++) {
  166.                 if(ar[i] == ar[i + 1]) {
  167.                     rub(ar, i);
  168.                     len--;
  169.                     i--;
  170.                 }
  171.             }
  172.             int [] res = new int[len];
  173.             for(int i = 0; i < len; i++) {
  174.                 res[i] = ar[i];
  175.             }
  176.             return res;
  177.         }
  178.  
  179. //Сортировка Выборкой
  180.         public static void SelectionSort(int [] ar) {
  181.            
  182.             int tmp = 0;
  183.             // sorting
  184.             for (int i = 0; i < ar.length - 1; i++) {
  185.                 int minIndex = i;
  186.                 for (int j = i + 1; j < ar.length; j++) {
  187.                     if (ar[j] < ar[minIndex]) {
  188.                         minIndex = j;
  189.                     }
  190.                 }
  191.                 if (i != minIndex) {
  192.                     tmp = ar[i];
  193.                     ar[i] = ar[minIndex];
  194.                     ar[minIndex] = tmp;
  195.                 }
  196.             }
  197.         }
  198.        
  199. //Сортировка Вставкой
  200.         public static void InsertionSort (int [] ar) {
  201.  
  202.             for (int i = 1; i < ar.length; i++) {
  203.                 int j = i - 1;
  204.                 int key = ar[i];
  205.                 while (j >= 0 && ar[j] > key) {
  206.                     ar[j + 1] = ar[j];
  207.                     j--;
  208.                 }
  209.                 ar[j + 1] = key;
  210.             }
  211.         }
  212.        
  213. // Реверс отврезка массива
  214.         public static void SwapInInterval(int ar[], int from, int to) {
  215.             if(to < from) {
  216.                 int tmp = to;
  217.                 to = from;
  218.                 from = tmp;
  219.             }
  220.             for (; from < to; from++, to--) {
  221.                 int tmp = ar[to];
  222.                 ar[to] = ar[from];
  223.                 ar[from] = tmp;
  224.             }
  225.         }
  226.        
  227. //Поиск двух минов
  228.         public static int[] TwoMinIndex(int ar[]) {
  229.             int min1 = 0;
  230.             for(int i = 0; i < ar.length; i++) {
  231.                 if(ar[min1] > ar[i]) min1 = i;
  232.             }
  233.             int min2 = 0;
  234.             for(int i = 0; i < ar.length; i++) {
  235.                 if(ar[min2] > ar[i] && i != min1) min2 = i;
  236.             }
  237.             int [] res = {min1, min2};
  238.             return res;
  239.         }
  240.        
  241. //Поиск индексов мина и макса
  242.         public static int MinIndex(int ar[]) {
  243.             int min = 0;
  244.             for(int i = 0; i < ar.length; i++) {
  245.                 if(ar[min] > ar[i]) min = i;
  246.             }
  247.             return min;
  248.         }
  249.         public static int MaxIndex(int ar[]) {
  250.             int max = 0;
  251.             for(int i = 0; i < ar.length; i++) {
  252.                 if(ar[max] < ar[i]) max = i;
  253.             }
  254.             return max;
  255.         }
  256.  
  257. //Реверс от мина до макса
  258.         public static void MinMaxRevers(int ar[]) {
  259.             SwapInInterval(ar, MinIndex(ar), MaxIndex(ar));
  260.         }
  261.        
  262. // Поменять местами половины массива
  263.             public static void midSwap(int ar[]) {
  264.                 int len = ar.length;
  265.                 int mid = len / 2;
  266.                 if(len % 2 == 1) mid++;
  267.                 for (int i = 0; mid < len; i++, mid++) {
  268.                     int tmp = ar[mid];
  269.                     ar[mid] = ar[i];
  270.                     ar[i] = tmp;
  271.                 }
  272.             }
  273.            
  274. // Сдвиг массива на 1 вправо-влево
  275.             public static void ShiftLeft(int ar[]) {
  276.                 int tmp = ar[0];
  277.                 for(int i = 1; i < ar.length; i++) {
  278.                     ar[i-1] = ar[i];
  279.                 }
  280.                 ar[ar.length - 1] = tmp;
  281.             }
  282.            
  283.             public static void ShiftRight(int ar[]) {
  284.                 int tmp = ar[ar.length - 1];
  285.                 for(int i = ar.length - 2; i >= 0; i--) {
  286.                     ar[i + 1] = ar[i];
  287.                 }
  288.                 ar[0] = tmp;
  289.             }
  290.            
  291. //Сдвиг на число Х
  292.             public static void Shift(int ar[], int X) {
  293.                 X = X % ar.length;
  294.                 if(X > 0) {
  295.                     for(int i = 0; i < X; i++) {
  296.                         ShiftRight(ar);
  297.                     }
  298.                 }
  299.                 else {
  300.                     for(int i = -1; i >= X; i--)
  301.                         ShiftLeft(ar);
  302.                 }
  303.             }
  304.            
  305. //Все ли элементы уникальны
  306.             public static boolean isUnique(int ar[]) {
  307.                 boolean res = true;
  308.                 InsertionSort(ar);
  309.                 for(int i = 0; i < ar.length - 1; i++) {
  310.                     if(ar[i] == ar[i + 1])
  311.                         res = false;
  312.                 }
  313.                 return res;
  314.             }
  315.  
  316. //Бинарный поиск первого вхождения
  317.             public static int binFirst(int ar[], int x) {
  318.                 int l = 0;
  319.                 int h = ar.length - 1;
  320.                 while(h >= l) {
  321.                     int mid = (l + h)/2;
  322.                     if((mid == 0 || x > ar[mid-1]) && ar[mid] == x)
  323.                         return mid;
  324.                     else if (x > ar[mid])
  325.                         l = mid + 1;
  326.                     else
  327.                         h = mid - 1;               
  328.                 }
  329.                 return -1;
  330.             }
  331.            
  332. // Найти количество вхождений через бинарку
  333.             public static int frequency(int ar[], int x) {
  334.                 //Sort
  335.                 SelectionSort(ar);
  336.                 //Search
  337.                 int firstIndex = binFirst(ar, x);
  338.                 //Counting
  339.                 int count = 0;
  340.                 if(firstIndex != -1) {
  341.                     // If firstIndex == ar.length, we will go beyond the array
  342.                     while(firstIndex != ar.length && ar[firstIndex] == x) {
  343.                         count++;
  344.                         firstIndex++;
  345.                     }
  346.                 }
  347.                 // Visual check
  348.                 System.out.println("In this array");
  349.                 printList(ar);
  350.                 System.out.printf("Number \"" + x + "\" is repeated " + count + " times");
  351.                 return count;
  352.             }
  353.            
  354.        
  355. //Реверс между первым и последним вхождением Х
  356.            
  357.             private static void ReverseBetween(int [] array, int X) {
  358.                 int first = 0;
  359.                 int last = array.length - 1;
  360.                 while(array[first] != X && first < last)
  361.                     first++;
  362.                 while(array[last] != X && first < last)
  363.                     last--;
  364.                 SwapInInterval(array, first, last);
  365.             }
  366.  
  367.            
  368. //Переместить все отрицательные и 0 в начало
  369.             public static void AgregatikOrder(int [] ar) {
  370.                
  371.                 int tmp = 0;
  372.                 for (int i = 1; i < ar.length; i++) {
  373.                     if(ar[i] <= 0) {
  374.                         int j = i - 1;
  375.                         tmp = ar[i];
  376.                         while (j >= 0 && ar[j] > 0) {
  377.                             ar[j + 1] = ar[j];
  378.                             j--;
  379.                         }
  380.                         ar[j + 1] = tmp;
  381.                     }
  382.                    
  383.                 }
  384.             }
  385.            
  386. //Свап мина и макса , меньших какого-то числа
  387.            
  388. //Их поиск
  389.             public static int MinIndex(int ar[], int x) {
  390.                 int min = -1;
  391.                 for(int i = 0; i < ar.length; i++) {
  392.                     if(ar[i] < x) {
  393.                         if(min == -1) min = i;
  394.                         else if(ar[min] > ar[i]) min = i;
  395.                     }
  396.                 }
  397.                 return min;
  398.             }
  399.             public static int MaxIndex(int ar[], int x) {
  400.                 int max = -1;
  401.                 for(int i = 0; i < ar.length; i++) {
  402.                     if(ar[i] < x) {
  403.                         if(max == -1) max = i;
  404.                         else if(ar[max] < ar[i]) max = i;
  405.                     }
  406.                 }
  407.                 return max;
  408.             }
  409. // Их свап
  410.             private static void SwapMinMax(int [] array, int X) {
  411.                 int min = MinIndex(array, X);
  412.                 int max = MaxIndex(array, X);
  413.                 int tmp = array[min];
  414.                 array[min] = array[max];
  415.                 array[max] = tmp;
  416.             }
  417.    
  418.        
  419.            
  420.            
  421. //---------------------------------------------------------
  422. //                   CHAR's function
  423. //---------------------------------------------------------
  424.            
  425.            
  426.            
  427.            
  428.            
  429.         private static void fillCharArray(char [] array) {
  430.             for (int i = 0; i <  array.length; i++) {
  431.                 array[i] = getRandomAlphaNum();
  432.             }
  433.         }
  434.        
  435.         private static char getRandomAlphaNum() {
  436.             char [] symbols = {'0','1','2','3','4','5','6','7','8','9',
  437.                     'a','b','c','d','e','f','g','h','i','j','k','l','m','n','o','p','q',
  438.                     'r','s','t','u','v','w','x','y','z', 'A','B','C','D','E','F','G','H','I',
  439.                     'J','K','L','M','N','O','P','Q',
  440.                     'R','S','T','U','V','W','X','Y','Z'};
  441.             Random r = new Random();
  442.             return symbols[r.nextInt(62)];
  443.         }
  444.  
  445.         private static void printList(char [] array) {
  446.             if(array.length == 0) {
  447.                 System.out.println("Your Array is empty.");
  448.             }else {
  449.                 for(int i = 0; i <  array.length; i++) {
  450.                     System.out.printf(array[i] + " ");
  451.                 }
  452.             }
  453.             System.out.println("");
  454.         }
  455.        
  456.  
  457.         public static void SelectionSort(char [] ar) {
  458.            
  459.             char tmp = 0;
  460.             // sorting
  461.             for (int i = 0; i < ar.length - 1; i++) {
  462.                 int minIndex = i;
  463.                 for (int j = i + 1; j < ar.length; j++) {
  464.                     if (ar[j] < ar[minIndex]) {
  465.                         minIndex = j;
  466.                     }
  467.                 }
  468.                 if (i != minIndex) {
  469.                     tmp = ar[i];
  470.                     ar[i] = ar[minIndex];
  471.                     ar[minIndex] = tmp;
  472.                 }
  473.             }
  474.         }
  475.        
  476.         public static int binFirst(char ar[], char x) {
  477.             int l = 0;
  478.             int h = ar.length - 1;
  479.             while(h >= l) {
  480.                 int mid = (l + h)/2;
  481.                 if((mid == 0 || x > ar[mid-1]) && ar[mid] == x)
  482.                     return mid;
  483.                 else if (x > ar[mid])
  484.                     l = mid + 1;
  485.                 else
  486.                     h = mid - 1;               
  487.             }
  488.             return -1;
  489.         }
  490.        
  491.         // Найти количество вхождений через бинарку
  492.         public static int frequency(char ar[], char x) {
  493.             //Sort
  494.             SelectionSort(ar);
  495.             //Search
  496.             int firstIndex = binFirst(ar, x);
  497.             //Counting
  498.             int count = 0;
  499.             if(firstIndex != -1) {
  500.                 // If firstIndex == ar.length, we will go beyond the array
  501.                 while(firstIndex != ar.length && ar[firstIndex] == x) {
  502.                     count++;
  503.                     firstIndex++;
  504.                 }
  505.             }
  506.             // Visual check
  507.             System.out.println("In this array");
  508.             printList(ar);
  509.             System.out.printf("Symbol \"" + x + "\" is repeated " + count + " times");
  510.            
  511.             return count;
  512.         }
  513.        
  514. // Добавить после каждого символа х "!" и "=" при выводе массива
  515.         public static void printArrayWith(char ar[], char x, String y) {
  516.             for(int i = 0; i < ar.length; i++) {
  517.                 System.out.printf("" + ar[i]);
  518.                 if(ar[i] == x) System.out.printf(y);
  519.             }
  520.         }
  521.        
  522. // Сдвиг массива на 1 вправо-влево
  523.                     public static void ShiftLeft(char ar[]) {
  524.                         char tmp = ar[0];
  525.                         for(int i = 1; i < ar.length; i++) {
  526.                             ar[i-1] = ar[i];
  527.                         }
  528.                         ar[ar.length - 1] = tmp;
  529.                     }
  530.                    
  531.                     public static void ShiftRight(char ar[]) {
  532.                         char tmp = ar[ar.length - 1];
  533.                         for(int i = ar.length - 2; i >= 0; i--) {
  534.                             ar[i + 1] = ar[i];
  535.                         }
  536.                         ar[0] = tmp;
  537.                     }
  538.                    
  539. //Сдвиг на число Х
  540.                     public static void Shift(char ar[], int X) {
  541.                         X = X % ar.length;
  542.                         if(X > 0) {
  543.                             for(int i = 0; i < X; i++) {
  544.                                 ShiftRight(ar);
  545.                             }
  546.                         }
  547.                         else {
  548.                             for(int i = -1; i >= X; i--)
  549.                                 ShiftLeft(ar);
  550.                         }
  551.                     }
  552.        
  553. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement