Рубрики

Программа для печати массива в Pendulum Arrangement с постоянным пробелом

Учитывая массив arr [] целых чисел, задача состоит в том, чтобы расположить их способом, подобным движению маятника туда-сюда без использования дополнительного пространства.

Расположение маятника :

  • Минимальный элемент из списка целых чисел должен находиться в центральной позиции массива.
  • Число в порядке возрастания рядом с минимумом идет вправо, следующее большее число идет слева от минимального числа и продолжается.
  • По мере того, как достигаются более высокие числа, человек перемещается в одну и ту же сторону, подобно маятнику.

Примеры:

Input: arr[] = {2, 3, 5, 1, 4}
Output: 5 3 1 2 4
The minimum element is 1, so it is moved to the middle.
The next higher element 2 is moved to the right of the
middle element while the next higher element 3 is
moved to the left of the middle element and
this process is continued.

Input: arr[] = {11, 2, 4, 55, 6, 8}
Output: 11 6 2 4 8 55

Подход: подход, который использует вспомогательный массив, был обсужден в этой статье. Вот подход без использования дополнительного пространства:

  1. Сортировать указанный массив.
  2. Переместите все нечетные позиции элемента в правой части массива.
  3. Обратный элемент от 0 до (n-1) / 2 позиции массива.

For example, let arr[] = {2, 3, 5, 1, 4}
Sorted array will be arr[] = {1, 2, 3, 4, 5}.
After moving all odd index position elements to the right,
arr[] = {1, 3, 5, 2, 4} (1 and 3 are the odd index positions)
After reversing elements from 0 to (n – 1) / 2,
arr[] = {5, 3, 1, 2, 4} which is the required array.

Ниже приведена реализация вышеуказанного подхода:

C ++

// C ++ реализация подхода
#include <bits/stdc++.h>

using namespace std;

  
// Функция для печати маятника
// расположение данного массива

void pendulumArrangement(int arr[], int n)

{

    // Сортировать массив

    sort(arr, arr + n);

  

    int odd, temp, in, pos;

  

    // pos хранит индекс

    // последний элемент массива

    pos = n - 1;

  

    // нечетный хранит последний нечетный индекс в массиве

    if (n % 2 == 0)

        odd = n - 1;

    else

        odd = n - 2;

  

    // Переместить все нечетные индексы

    // элементы справа

    while (odd > 0) {

        temp = arr[odd];

        in = odd;

  

        // Смещаем элементы на одну позицию

        // от нечетного до положительного

        while (in != pos) {

            arr[in] = arr[in + 1];

            in++;

        }

        arr[in] = temp;

        odd = odd - 2;

        pos = pos - 1;

    }

  

    // Обратный элемент от 0 до (n - 1) / 2

    int start = 0, end = (n - 1) / 2;

  

    for (; start < end; start++, end--) {

        temp = arr[start];

        arr[start] = arr[end];

        arr[end] = temp;

    }

  

    // Печать маятникового устройства

    for (int i = 0; i < n; i++)

        cout << arr[i] << " ";

}

  
// Код драйвера

int main()

{

    int arr[] = { 11, 2, 4, 55, 6, 8 };

    int n = sizeof(arr) / sizeof(arr[0]);

  

    pendulumArrangement(arr, n);

  

    return 0;

}

Джава

// Java реализация подхода

import java.util.Arrays;

import java.io.*;

  

class GFG {

  

    // Функция для печати маятника

    // расположение данного массива

    static void pendulumArrangement(int arr[], int n)

    {

        // Сортировать массив

        // сортировать (arr, arr + n);

  

        Arrays.sort(arr);

  

        int odd, temp, in, pos;

  

        // pos хранит индекс

        // последний элемент массива

        pos = n - 1;

  

        // нечетный хранит последний нечетный индекс в массиве

        if (n % 2 == 0)

            odd = n - 1;

        else

            odd = n - 2;

  

        // Переместить все нечетные индексы

        // элементы справа

        while (odd > 0) {

            temp = arr[odd];

            in = odd;

  

            // Смещаем элементы на одну позицию

            // от нечетного до положительного

            while (in != pos) {

                arr[in] = arr[in + 1];

                in++;

            }

            arr[in] = temp;

            odd = odd - 2;

            pos = pos - 1;

        }

  

        // Обратный элемент от 0 до (n - 1) / 2

        int start = 0, end = (n - 1) / 2;

  

        for (; start < end; start++, end--) {

            temp = arr[start];

            arr[start] = arr[end];

            arr[end] = temp;

        }

  

        // Печать маятникового устройства

        for (int i = 0; i < n; i++)

            System.out.print(arr[i] + " ");

    }

  

    // Код драйвера

    public static void main(String[] args)

    {

  

        int arr[] = { 11, 2, 4, 55, 6, 8 };

        int n = arr.length;

  

        pendulumArrangement(arr, n);

    }

}

  
// Этот код предоставлен akt_mit

python3

# Python 3 реализация подхода

  
# Функция для печати маятника
# расположение данного массива

def pendulumArrangement(arr, n):

      

    # Сортировать массив

    arr.sort(reverse = False)

  

    # pos хранит индекс

    # последний элемент массива

    pos = n - 1

  

    # odd хранит последний нечетный индекс в массиве

    if (n % 2 == 0):

        odd = n - 1

    else:

        odd = n - 2

  

    # Переместить все нечетные позиции

    # элементы справа

    while (odd > 0):

        temp = arr[odd]

        in1 = odd

  

        # Сместить элементы на одну позицию

        # от нечетного до положительного

        while (in1 != pos):

            arr[in1] = arr[in1 + 1]

            in1 += 1

  

        arr[in1] = temp

        odd = odd - 2

        pos = pos - 1

  

    # Обратный элемент от 0 до (n - 1) / 2

    start = 0

    end = int((n - 1) / 2)

  

    while(start < end):

        temp = arr[start]

        arr[start] = arr[end]

        arr[end] = temp

        start += 1

        end -= 1

  

    # Печать маятникового устройства

    for i in range(n):

        print(arr[i], end = " ")

  
# Код драйвера

if __name__ == '__main__':

    arr = [11, 2, 4, 55, 6, 8]

    n = len(arr)

  

    pendulumArrangement(arr, n)

  
# Этот код предоставлен
# Surendra_Gangwar

C #

// C # реализация подхода

using System; 

  

class GFG 

{

  

    // Функция для печати маятника

    // расположение данного массива

    static void pendulumArrangement(int[] arr, int n)

    {

        // Сортировать массив

        // сортировать (arr, arr + n);

  

        Array.Sort(arr);

  

        int odd, temp, p, pos;

  

        // pos хранит индекс

        // последний элемент массива

        pos = n - 1;

  

        // нечетный хранит последний нечетный индекс в массиве

        if (n % 2 == 0)

            odd = n - 1;

        else

            odd = n - 2;

  

        // Переместить все нечетные индексы

        // элементы справа

        while (odd > 0) 

        {

            temp = arr[odd];

            p = odd;

  

            // Смещаем элементы на одну позицию

            // от нечетного до положительного

            while (p != pos)

            {

                arr[p] = arr[p + 1];

                p++;

            }

            arr[p] = temp;

            odd = odd - 2;

            pos = pos - 1;

        }

  

        // Обратный элемент от 0 до (n - 1) / 2

        int start = 0, end = (n - 1) / 2;

  

        for (; start < end; start++, end--) 

        {

            temp = arr[start];

            arr[start] = arr[end];

            arr[end] = temp;

        }

  

        // Печать маятникового устройства

        for (int i = 0; i < n; i++)

            Console.Write(arr[i] + " ");

    }

  

    // Код драйвера

    public static void Main()

    {

  

        int[] arr = { 11, 2, 4, 55, 6, 8 };

        int n = arr.Length;

  

        pendulumArrangement(arr, n);

    }

}

  
// Этот код предоставлен ChitraNayal

PHP

<?php
// PHP реализация подхода

  
// Функция для печати маятника
// расположение данного массива

function pendulumArrangement($arr, $n

    // Сортировать массив

    sort($arr) ; 

  

    // pos хранит индекс

    // последний элемент массива

    $pos = $n - 1; 

  

    // нечетный хранит последний нечетный индекс в массиве

    if ($n % 2 == 0) 

        $odd = $n - 1; 

    else

        $odd = $n - 2; 

  

    // Переместить все нечетные индексы

    // элементы справа

    while ($odd > 0)

    

        $temp = $arr[$odd]; 

        $in = $odd

  

        // Смещаем элементы на одну позицию

        // от нечетного до положительного

        while ($in != $pos

        

            $arr[$in] = $arr[$in + 1]; 

            $in++; 

        

        $arr[$in] = $temp

        $odd = $odd - 2; 

        $pos = $pos - 1; 

    

  

    // Обратный элемент от 0 до (n - 1) / 2

    $start = 0;

    $end = floor(($n - 1) / 2); 

  

    for (; $start < $end; $start++, $end--) 

    

        $temp = $arr[$start]; 

        $arr[$start] = $arr[$end]; 

        $arr[$end] = $temp

    

  

    // Печать маятникового устройства

    for ($i = 0; $i < $n; $i++) 

        echo $arr[$i], " "

  
// Код драйвера

$arr = array( 11, 2, 4, 55, 6, 8 ); 

$n = count($arr); 

  

pendulumArrangement($arr, $n); 

  
// Этот код предоставлен AnkitRai01

  
?>

Выход:

11 6 2 4 8 55

Рекомендуемые посты:

Программа для печати массива в Pendulum Arrangement с постоянным пробелом

0.00 (0%) 0 votes