Reorganice la array dada dividiéndola por la mitad e insertando la segunda mitad al revés en una posición alternativa

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>
Producción

1 6 2 5 3 4 

Complejidad temporal: O(N)
Espacio auxiliar: O(N)

Publicación traducida automáticamente

Artículo escrito por nobita04 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *