অ্যারেটিকে পুনরায় সাজান যে সূচকের উপাদানগুলিও ছোট এবং বিজোড় সূচকের উপাদানগুলি বেশি are


কাঠিন্য মাত্রা সহজ
প্রায়শই জিজ্ঞাসা করা হয় Avalara এপিক সিস্টেম ফোরকিটস Roblox টেসলা
বিন্যাস

সমস্যা বিবৃতি

আপনি একটি দিয়েছেন বিন্যাস of পূর্ণসংখ্যার। সমস্যাটি "অ্যারে পুনরায় সাজান যেমন সূচকের উপাদানগুলি আরও ছোট এবং বিজোড় সূচক উপাদানগুলি আরও বেশি" অ্যারেটিকে এমনভাবে পুনর্বিন্যস্ত করতে বলে যে এমনকি সূচক উপাদানগুলি পরিবর্তিত অ্যারেতে বিজোড় সূচক উপাদানগুলির চেয়ে ছোট হওয়া উচিত।

উদাহরণ

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

ব্যাখ্যা: 2 সমান সূচক অবস্থানে (0 সূচক) তাই এটি পরবর্তী বিজোড় সূচক উপাদানের চেয়ে ছোট, 1 টির চেয়ে ছোট যা বিজোড় সূচকযুক্ত উপাদানের উপর রয়েছে।

অ্যারেগুলিকে পুনরায় সাজানোর জন্য অ্যালগরিদম এমনকি সূচিকৃত উপাদানগুলিও বিজোড় সূচকগুলির চেয়ে ছোট smaller

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 অ্যারের দৈর্ঘ্য। ট্র্যাভারসাল পর্যন্ত এন -1 এর চেয়ে কম এক নিন কারণ অ্যারেতে উপস্থিত থাকলে আমরা পরবর্তী উপাদানগুলির সাথে এটি তুলনা করতে যাচ্ছি। সুতরাং তুলনা করার জন্য আমাদের সেই জায়গাটি ছেড়ে যেতে হবে অন্যথায় এটি একটি ত্রুটির মাধ্যমে ঘটবে। যদি আমরা n এর চেয়ে কম অবধি লুপ করি, তবে এটি সূচকে আঘাত করবে যা অ্যারেতে নেই। এ কারণেই আমরা 0 - n এর চেয়ে কম ট্র্যাভারসাল নিয়েছি।

আমরা অ্যারেটি অতিক্রম করব এবং 'i' এর প্রতিটি মান পরীক্ষা করব যে এটি সমান বা বিজোড় যদি সমান হয় এবং অ্যারেও [i] পরবর্তী উপাদানগুলির চেয়ে বড় হয়। এর অর্থ হ'ল পরবর্তী উপাদানের অবস্থানটি যেমন আমি অবশ্যই বিজোড়, এবং বিজোড় অবস্থানযুক্ত উপাদান এমনকি অবস্থানযুক্ত উপাদানের চেয়ে কম। সুতরাং আমরা অ্যারের হিসাবে উপাদানগুলিকে অদলবদল করতে যাচ্ছি [i] হ'ল বর্তমান এমনকি উপাদান এবং অ্যারে [i + 1] পরবর্তী বিজোড় অবস্থানযুক্ত উপাদান।

এখন একই সাথে আমরা যাচাই করি যে 'i' এর মানটি বিজোড় কিনা এবং যদি এই সূচকের উপাদানটি পূর্ববর্তী উপাদানের চেয়ে ছোট হয় তবে আমরা অ্যারেতে মানগুলি অদলবদল করতে যাচ্ছি। সমস্ত সম্ভাব্য মান অদলবদল করার পরে, তাই গঠিত অ্যারেটি চূড়ান্ত এবং পছন্দসই আউটপুট হবে।

অ্যারেটিকে পুনরায় সাজান যে সূচকের উপাদানগুলিও ছোট এবং বিজোড় সূচকের উপাদানগুলি বেশি are

কোড

সি ++ কোড অ্যারেটিকে পুনরায় সাজানোর জন্য এমন যে সূচকযুক্ত উপাদানগুলি বিজোড় সূচকগুলির চেয়েও ছোট

#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

জটিলতা বিশ্লেষণ

সময় জটিলতা

উপর) কোথায় "এন" অ্যারেতে উপাদানগুলির সংখ্যা। আমরা কেবল অ্যারেটি অতিক্রম করেছি এবং উপাদানগুলিকে অদলবদল করেছি এভাবে সময় জটিলতা রৈখিক।

স্পেস জটিলতা ity

ও (1) কারণ আমরা ধ্রুবক স্পেস ব্যবহার করেছি তবে পুরো প্রোগ্রামটিতে O (n) স্পেস লাগে।