Массивті жұп индекс элементтері кішірек, тақ индекс элементтері үлкен болатындай етіп реттеңіз


Күрделілік дәрежесі оңай
Жиі кіреді Авалара Эпикалық жүйелер Фуркиттер Roblox Tesla
Array

Проблемалық мәлімдеме

Сіз ан массив of бүтін сандар. «Массивті жұп индекс элементтері кішірек, тақ индекс элементтері көбірек болатындай етіп қайта құру» мәселесі массивті өзгерткен массивтегі тақ индекс элементтеріне қарағанда жұп индекс элементтері кішірек болатындай етіп қайта құруды сұрайды.

мысал

arr[]={ 2,5,7,1,3,4 }
2 7 1 5 3 4

Түсініктеме: 2 индекстің жұп күйінде (0 индексі), сондықтан ол келесі тақ индекстелген элементтен кіші, 1 тақ индекстелген элементтегі 5-тен кіші.

Массивті жұп индекстелген элементтер тақ индекстелгенге қарағанда кішірек етіп орналастыру алгоритмі

1. Traverse the array from 0 to n-1(less than the length of the array).
2. Check if the index is even and the next element is smaller than the current element then swap both of the numbers.
3. Check if the index is odd and the next element is greater than the current element, then swap both of the numbers.
4. Print the array.

Түсіндіру

Ұзындық n жиымы берілген. Бізден массивті жұп индекс элементтері тақ индекстелген элементтерден кішірек болатындай етіп өзгертуді сұрайды. Егер біз шарттар орындалмаса, элементтерді ауыстыру арқылы жасаймыз. Біріншіден, біз оның түрін тек жұп немесе тақ екенін тексеріп, содан кейін модификациялауымыз керек массив.

Массивті 0-ден n-1-ге дейін өтіңіз, мұндағы n - массивтің ұзындығы. Өткізуге дейін n-1-ден бір кем алыңыз, өйткені егер біз оны массивте болса, келесі элементпен салыстырамыз. Сондықтан біз салыстыру үшін сол жерден кетуіміз керек, егер ол қате болса. Егер біз n-ге дейін цикл жасасақ, онда ол массивте жоқ индексті ұрады. Сондықтан біз 0-ден n - 1-ге дейінгі өтпелі жолды алдық.

Біз массивті айналып өтіп, 'i' мәнінің мәнін тексереміз, егер ол жұп немесе тақ болса, егер ол [i] массиві келесі элементтен үлкен болса. Бұл келесі элементтің орнын білдіреді, өйткені i міндетті түрде тақ, ал тақ позицияланған элемент жұп орналасқан элементтен аз болады. Сондықтан біз элементтерді алмастырамыз, себебі arr [i] ағымдағы жұп элемент, ал arr [i + 1] келесі тақ позицияланған элемент.

Енді біз бір уақытта 'i' мәнінің тақ екенін тексереміз, егер осы индекстегі элемент алдыңғы элементтен кіші болса, онда біз массивтегі мәндерді ауыстырамыз. Барлық мүмкін мәндерді ауыстырғаннан кейін, осылайша құрылған жиым соңғы және қажетті нәтиже болады.

Массивті жұп индекс элементтері кішірек, тақ индекс элементтері үлкен болатындай етіп реттеңіз

код

Массивті қайта реттеуге арналған C ++ коды, тіпті индекстелген элементтер тақ индекстелгеннен кішірек болады

#include <iostream>
using namespace std;

void evenOddComparison (int* arr, int n)
{
    for (int i = 0; i < n - 1; i++)
    {
        if (i % 2 == 0 && arr[i] > arr[i + 1])
            swap(arr[i], arr[i + 1]);

        if (i % 2 != 0 && arr[i] < arr[i + 1])
            swap(arr[i], arr[i + 1]);
    }
}

void printArray(int arr[], int size)
{
    for (int i = 0; i < size; i++)
        cout << arr[i] << " ";

    cout << endl;
}

int main()
{
    int arr[] = {  2,5,7,1,3,4  };
    int n = sizeof(arr) / sizeof(arr[0]);

    evenOddComparison (arr, n);

    printArray(arr, n);

    return 0;
}
2 7 1 5 3 4

Массивті индекстелген элементтер тақ индекстелгеннен кішірек болатындай етіп қайта құруға арналған Java коды

class rearrangeArray
{
    public static void evenOddComparison(int arr[], int n)
    {

        int temp;
        for (int i = 0; i < n - 1; i++)
        {
            if (i % 2 == 0 && arr[i] > arr[i + 1])
            {
                temp = arr[i];
                arr[i] = arr[i + 1];
                arr[i + 1] = temp;
            }
            if (i % 2 != 0 && arr[i] < arr[i + 1])
            {
                temp = arr[i];
                arr[i] = arr[i + 1];
                arr[i + 1] = temp;
            }
        }
    }
    public static void printArray(int arr[], int size)
    {
        for (int i = 0; i < size; i++)
            System.out.print(arr[i] + " ");

        System.out.println();
    }
    public static void main(String[] args)
    {
        int arr[] = { 2,5,7,1,3,4 };
        int n = arr.length;

        evenOddComparison (arr, n);

        printArray(arr, n);
    }
}
2 7 1 5 3 4

Күрделілікті талдау

Уақыттың күрделілігі

O (N) қайда «N» - бұл массивтегі элементтер саны. Біз жиымнан өтіп, элементтерді ауыстырдық, осылайша уақыт күрделілігі сызықтық болып табылады.

Ғарыштың күрделілігі

O (1) өйткені біз тұрақты кеңістікті пайдаландық, бірақ бағдарлама O (n) кеңістігін тұтасымен алады.