Dada una array arr[] de longitud uniforme N , la tarea es realizar las siguientes operaciones en la array dada:
- Divide la array dada por la mitad.
- Inserte la segunda mitad en orden inverso en posiciones alternas desde el principio.
Ejemplos:
Entrada: N = 6, arr[] = {1, 2, 3, 4, 5, 6}
Salida: 1 6 2 5 3 4
Explicación: El primer elemento es 1.
Luego imprime el último elemento 6
Luego el segundo elemento 2 seguido del segundo último elemento (es decir, el quinto elemento) 5.
Ahora imprima el tercer elemento que es 3 y el tercero último (es decir, el cuarto elemento) 4.Entrada: N = 4, arr[] = {12, 34, 11, 20}
Salida: 12 20 34 11
Enfoque: este problema se resuelve dividiendo la array en dos partes con la ayuda de dos punteros i comenzando desde 0 y j comenzando desde (N-1) . Ahora imprima los elementos en i y j alternativamente e incremente i/ decremente j cuando un elemento en la i-ésima/j-ésima posición se inserte en una nueva array.
A continuación se muestra la implementación del enfoque anterior.
C++
// C++ Program to implement the approach #include <bits/stdc++.h> using namespace std; // Function to arrange array in alternate order vector<int> printAlternate(int arr[], int N) { int i = 0, j = N - 1; vector<int> ans; // Run loop while i <= j while (i <= j) { // Push the element from starting ans.push_back(arr[i]); // Push the element from back ans.push_back(arr[j]); // Increment i by 1 i = i + 1; // Decrement j by 1 j = j - 1; } return ans; } // Driver code int main() { int N = 6; int arr[N] = { 1, 2, 3, 4, 5, 6 }; // Function call vector<int> ans = printAlternate(arr, N); for (int x : ans) cout << x << " "; return 0; }
Java
// Java Program to implement the approach import java.util.*; class GFG { // Function to arrange array in alternate order public static ArrayList<Integer> printAlternate(int[] arr, int N) { int i = 0, j = N - 1; ArrayList<Integer> ans = new ArrayList<>(); // Run loop while i <= j while (i <= j) { // Push the element from starting ans.add(arr[i]); // Push the element from back ans.add(arr[j]); // Increment i by 1 i = i + 1; // Decrement j by 1 j = j - 1; } return ans; } public static void main(String[] args) { int N = 6; int arr[] = { 1, 2, 3, 4, 5, 6 }; // Function call ArrayList<Integer> ans = printAlternate(arr, N); for (int x : ans) System.out.print(x + " "); } } // This code is contributed by ninja_hattori.
Python3
# Python Program to implement the approach # Function to arrange array in alternate order def printAlternate(arr, N): i = 0 j = N - 1 ans = [] # Run loop while i <= j while (i <= j): # Push the element from starting ans.append(arr[i]) # Push the element from back ans.append(arr[j]) # Increment i by 1 i = i + 1 # Decrement j by 1 j = j - 1 return ans # Driver code N = 6 arr = [1, 2, 3, 4, 5, 6] # Function call ans = printAlternate(arr, N) for x in ans: print(x, end=' ') # This code is contributed by Palak Gupta
C#
// C# Program to implement the approach using System; using System.Collections; class GFG { // Function to arrange array in alternate order static ArrayList printAlternate(int[] arr, int N) { int i = 0, j = N - 1; ArrayList ans = new ArrayList(); // Run loop while i <= j while (i <= j) { // Push the element from starting ans.Add(arr[i]); // Push the element from back ans.Add(arr[j]); // Increment i by 1 i = i + 1; // Decrement j by 1 j = j - 1; } return ans; } // Driver code public static void Main() { int N = 6; int[] arr = { 1, 2, 3, 4, 5, 6 }; // Function call ArrayList ans = printAlternate(arr, N); foreach(int x in ans) Console.Write(x + " "); } } // This code is contributed by Samim Hossain Mondal.
Javascript
<script> // JavaScript code for the above approach // Function to arrange array in alternate order function printAlternate(arr, N) { let i = 0, j = N - 1; let ans = []; // Run loop while i <= j while (i <= j) { // Push the element from starting ans.push(arr[i]); // Push the element from back ans.push(arr[j]); // Increment i by 1 i = i + 1; // Decrement j by 1 j = j - 1; } return ans; } // Driver code let N = 6; let arr = [1, 2, 3, 4, 5, 6]; // Function call let ans = printAlternate(arr, N); for (let x of ans) document.write(x + " "); // This code is contributed by Potta Lokesh </script>
1 6 2 5 3 4
Complejidad temporal: O(N)
Espacio auxiliar: O(N)