ترتیب مجدد آرایه به گونه ای است که عناصر شاخص حتی کوچکتر و عناصر شاخص فرد بیشتر هستند


سطح دشواری ساده
اغلب در Avalara سیستمهای حماسی فورکایت Roblox تسلا
صف

بیان مسأله

شما داده اید صف 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

کد جاوا برای تنظیم مجدد آرایه به گونه ای است که عناصر نمایه شده زوج نیز کوچکتر از نمایه شده فرد هستند

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) را می گیرد.