Массивро ба тартиб дароваред - хурдтарин, калонтарин, 2 хурдтарин, 2 калонтарин


Сатҳи душворӣ миёна
Аксар вақт пурсида мешавад Amazon Citadel Expedia GE Тандурустӣ Qualcomm Qualities Тиллио Яра
тартиботи ҳарбӣ Sorting

Изҳороти мушкилот

Фарз мекунем, ки шумо массиви бутун доред. Масъалаи "Аз нав ба тартиб даровардани массив - хурдтарин, калонтарин, 2 хурдтарин, 2 калонтарин, .." дархост мекунад, ки массивро тавре тағир диҳед, ки шумораи хурдтарин аввал ва сипас адади калонтарин, баъд дуюм хурдтарин ва баъд дуюм бошад. калонтарин ва ғайра.

мисол

arr[] = {1,4,6,2,3,8,9,7}
1 9 2 8 3 7 4 6

Шарҳ: Ададҳои хурдтарин 1 ва калонтаринҳо 9, 2 мебошандnd хурдтарин ҳамчун 2 ва 2nd калонтарин ҳамчун 8, 3rd хурдтарин 3 ва 3 мебошадrd калонтарин 7, 4 хурдтарин 3 ва 4 калонтарин 7 мебошанд. Ҳамин тариқ, натиҷаи натиҷавӣ ба ҳамон тарзе, ки дар масъала гуфта шудааст, ҷойгир карда шудааст.

Алгоритми ҷобаҷогузории массив бо тартиби хурдтарин, калонтарин, 2 хурдтарин, 2 калон

1. Sort the given array.
2. We have to use a temporary array, so declare one.
3. Set index to 0.
4. Traverse the array from left and from right, with i = 0 and j = n – 1 up the half of the array length.
    1. Store the value of arr[j] to the temporary[index] and increase the value of the index by 1.
    2. Store the value of arr[j] to the temporary[index] and increase the value of the index by 1.
5. Update the original array by storing the value of a temporary array to the original array.
6. At last, the original array should be printed.

Шарҳ

Бо назардошти массиви ҳаждаҳҳо. Мо хоҳиш кардем, ки массивро тавре тағир диҳед, ки шумораи хурдтарин ва аз ҳама калонтарини асал бояд мутаносибан аввал ва дуввум биёянд. Пас, 2nd рақами хурдтарин ва 2мд бузургтарин бояд мутаносибан навбатӣ омада, онро идома диҳад, 3rd хурдтарин ва 3rd шумораи калонтарин бояд навбат ба навбат ояд. Дар ин пайдарпаӣ, мо бояд массивро ҷобаҷо кунем. Мо барои иҷрои ин талаб массиви иловагиро истифода хоҳем бурд. Массиви додашударо ҷобаҷо кунед, то ҳар кадоме бо тартиби камшаванда ояд.

Бо ҷобаҷогузории массив, мо рақами хурдтаринро дар нисф ва шумораи калонро дар нисфи дигар дар доираи массив дорем. Фарз мекунем, ки мо адади аз 1 то 10-ро дорем, ки ба таври тасодуфӣ дар массив нигоҳ дошта мешавад ва агар онҳоро ба навъҳо ҷудо кунем, пас аз 1 то 5 дар нимаи аввал ва аз 6 то 10 дар нимаи дуввум хоҳад буд.

Ба ҳамин монанд, дар ин ҷо, акнун мо метавонем аз чап ҳаракат карда, арзишҳоро дар массиви сохташуда нигоҳ дорем. Азбаски мо аз чап оғоз мекунем, танҳо ҷузъи хурдтарин хоҳад буд, то ин элементро ба массиви муваққатӣ дохил кунем. Пас, дар мавқеи аввал, танҳо хурдтарин унсур мавҷуд аст. Акнун аз рост ҳаракат кунед, зеро массив мураттаб карда шудааст, то он ҷое ки калонтарин унсур бошад, пас мо ҳоло он элементро ба массиви муваққатӣ мегузорем. Аввалин хурдтарин ва калонтарини мо ба итмом расид, акнун ба тавре ки пештар анҷом додем, бояд аз унсури чапи оянда ҳаракат карда ба массиви муваққатӣ нигоҳ дорем ва сипас аз тарафи рост унсури дуввуми калонтаринро нигоҳ дошта, ба массива бардорем, , мо метавонем ба натиҷаи дилхоҳ ноил шавем. Акнун танҳо он массивро чоп кунед.

Массивро ба тартиб дароваред - хурдтарин, калонтарин, 2 хурдтарин, 2 калонтарин

рамз

Рамзи C ++ барои азнавсозӣ кардани массив - хурдтарин, калонтарин, 2 хурдтарин, 2 калон

#include<iostream>
#include<algorithm>

using namespace std;

void rearrangeInOrderSL(int arr[], int n)
{
    sort(arr, arr + n);

    int temporaryArray[n];

    int Index = 0;

    for (int i = 0, j = n-1; i <= n / 2 ||j > n / 2; i++, j--)
    {
        temporaryArray[Index] = arr[i];
        Index++;
        temporaryArray[Index] = arr[j];
        Index++;
    }
    for (int i = 0; i < n; i++)
        arr[i] = temporaryArray[i];

    for (int i = 0; i < n; i++)
        cout << arr[i] << " ";
}
int main()
{
    int arr[] = {1,4,6,2,3,8,9,7};
    int n = sizeof(arr) / sizeof(arr[0]);

    rearrangeInOrderSL(arr, n);

    return 0;
}
1 9 2 8 3 7 4 6

Рамзи Java барои ҷобаҷогузории массив - хурдтарин, калонтарин, 2 хурдтарин, 2 калон

import java.util.Arrays;
class rearrangeArraySL
{
    public static void rearrangeInOrderSL(int arr[], int n)
    {
        Arrays.sort(arr);

        int[] temporaryArray = new int[n];

        int Index = 0;

        for (int i = 0, j = n-1; i <= n / 2 || j > n / 2; i++, j--)
        {
            if(Index < n)
            {
                temporaryArray[Index] = arr[i];
                Index++;
            }

            if(Index < n)
            {
                temporaryArray[Index] = arr[j];
                Index++;
            }
        }
        for (int i = 0; i < n; i++)
            arr[i] = temporaryArray[i];
    }
    public static void main(String args[])
    {
        int arr[] = {1,4,6,2,3,8,9,7};
        int n = arr.length;
        rearrangeInOrderSL(arr, n);

        for (int i = 0; i < n; i++)
            System.out.print(arr[i]+" ");
    }
}
1 9 2 8 3 7 4 6

Таҳлили мураккабӣ

Мураккабии вақт

O (N log N) ки дар "N" шумораи унсурҳои массив аст. Мо вурудро ҷобаҷо кардем, бинобар ин мо ин мушкилии замонро дорем.

Мураккабии фазо

О (Н) ки дар "N" шумораи унсурҳои массив аст. Якҷоя кардани навъ худ фазои O (N) -ро мегирад.