Программа Java для разделения массива из указанной позиции
Учитывая массив размера N , наша задача состоит в том, чтобы разбить массив в определенной позиции, указанной пользователем. Также обсудим пограничные случаи.
Рассмотрим следующий пример.

Из приведенного выше примера пусть A будет исходным массивом, который мы хотим разбить. Пусть N будет длиной массива A (N = 10) и пусть pos будет позицией, которую мы хотим разделить. В приведенном выше примере pos = 5 . Все элементы перед этой позицией, т.е. из индекса 0-4 будут разделены на один массив, а элементы из индекса 5-10 разделены на более позднюю часть, помеченную как B и C соответственно. Но если позиция равна 0 или больше N, то он не может разбить массив, и отображается сообщение о недопустимой позиции.
Примеры:
Input: A[] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 0}
pos = 5
Output: B[] = { 1, 2, 3, 4, 5}
C[] = { 6,7,8,9,0}
Input: A[] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 0}
pos = -1
Output: Invalid position
Input: A[] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 0}
pos = 20
Output: Invalid position
Метод 1. В первом методе мы будем использовать два цикла for. Это довольно простой метод.
- Шаг 1: сначала мы принимаем значение pos от пользователя
 - Шаг 2: мы объявляем два массива B и C, имеющих размер pos и N - pos соответственно.
 - Шаг 3: Затем у нас есть два цикла: первый цикл запускается с 0 - позиция инициализирующего массива B, а второй цикл - от 0 до N - инициализирующего массива C.
 
Мы также добавили вспомогательный метод pprint (), который принимает массив и печатает его. У нас также есть оператор if, проверяющий допустимое значение pos.
Example:
Java
import java.util.*;public class SplittingArray1 {    // this method accepts a array and prints the value    static void pprint(int arr[])    {        for (int var : arr) {            System.out.print(var + " ");        }        System.out.println();    }    public static void main(String args[])    {        // original array        int a[] = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 0 };        // size of array        int n = a.length;        // accepting the value of position from the user        Scanner scanner = new Scanner(System.in);        System.out.println("Enter position to split.");        int pos = scanner.nextInt();        // validating the position for invalid values.        if (pos > 0 && pos < n) {            // method  1 : using two for loops            // declaring array B and C            int b[] = new int[pos];            int c[] = new int[n - pos];            // initializing array B            for (int i = 0; i < pos; i++) {                b[i] = a[i];            }            // initializing array C            for (int i = 0; i < n - pos; i++) {                c[i] = a[i + pos];            }            // printing the array b and c            pprint(b);            pprint(c);        }        else {            System.out.println("Invalid position.");        }    }} | 
Введите позицию для разделения. Неверная позиция.
Метод 2: В этом методе вместо использования двух циклов for мы пытаемся реализовать одну и ту же программу, используя только один.
- Шаг 1 и Шаг 2 аналогичны методу 1
 - Шаг 3: запускаем цикл for от 0 до N - 1
 
если index <pos инициализируем массив B иначе, если pos> index инициализируем массив C
Пример:
Java
import java.util.Arrays;import java.util.Scanner;public class SplittingArray2 {    // this method accepts a array and prints the value    static void pprint(int arr[])    {        for (int var : arr) {            System.out.print(var + " ");        }        System.out.println();    }    public static void main(String args[])    {        // original array A        int a[] = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 0 };        int n = a.length;        Scanner scanner = new Scanner(System.in);        System.out.println("Enter position to split.");        int pos = scanner.nextInt();        if (pos > 0 && pos < n) {            // method  2 : using only one forloop            int b[] = new int[pos];            int c[] = new int[n - pos];            // only using one for loop to solve the problem.            for (int i = 0; i < n; i++) {                if (i < pos)                    b[i] = a[i];                else                    c[i - pos] = a[i];            }            // printing the array b and c            pprint(b);            pprint(c);        }        else {            System.out.println("Invalid position.");        }    }} | 
Введите позицию для разделения. Неверная позиция.
Способ 3:
Это самый короткий способ. В этом методе мы используем встроенный метод Arrays.copyOfRange () .
public static short[] copyOfRange(short[] original, int from, int to)
original − This is the array from which a range is to to be copied.
from − This is the initial index of the range to be copied, inclusive.
to − This is the final index of the range to be copied, exclusive.
Пример:
Java
import java.util.Arrays;import java.util.Scanner;public class SplittingArray3 {    static void pprint(int arr[])    {        for (int var : arr) {            System.out.print(var + " ");        }        System.out.println();    }    public static void main(String args[])    {        int a[] = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 0 };        int n = a.length;        Scanner scanner = new Scanner(System.in);        System.out.println("Enter position to split.");        int pos = scanner.nextInt();        if (pos > 0 && pos < n) {            // method  3 : using  Arrays.copyOfRange()            int b[] = new int[pos];            int c[] = new int[n - pos];            // initializing array B by copying values from            // index 0  to pos - 1            b = Arrays.copyOfRange(a, 0, pos);            // initializing array B by copying values from            // index pos  to n - 1            c = Arrays.copyOfRange(a, pos, n);            // printing the array b and c            pprint(b);            pprint(c);        }        else {            System.out.println("Invalid position.");        }    }} | 
Введите позицию для разделения. Неверная позиция.
Сложность времени: O (n)
Космическая сложность: O (n)
Вниманию читателя! Не переставай учиться сейчас. Ознакомьтесь со всеми важными концепциями Java Foundation и коллекций с помощью курса "Основы Java и Java Collections" по доступной для студентов цене и будьте готовы к работе в отрасли. Чтобы завершить подготовку от изучения языка к DS Algo и многому другому, см. Полный курс подготовки к собеседованию .