နောက်ထပ် Array ကို အသုံးပြု၍ Element များကိုအမြင့်ဆုံးသတ်မှတ်နိုင်သည်


ခက်ခဲအဆင့် အလယ်အလတ်
မကြာခဏမေးတယ် အမေဇုံ ဝါသနာရှင်များ လေးကစ်
အခင်းအကျင်း hash sorting

ဆိုကြပါစို့, ငါတို့တူညီသောအရွယ်အစား n ၏နှစ်ခုကိန်းခင်းကျင်းပေးထားပါပြီ။ Array နှစ်ခုစလုံးတွင်အပေါင်းနံပါတ်များပါရှိသည်။ ပြstatementနာဖော်ပြချက်သည်ဒုတိယခင်းကျင်းမှုကို ဦး စားပေးအဖြစ်ထားရန်ဒုတိယခင်းကျင်းသောဒြပ်စင်ကိုအသုံးပြုခြင်းအားဖြင့်ပထမခင်းကျင်းမှုကိုတိုးမြှင့်ပေးရန်တောင်းဆိုသည်။ ဒါဖွဲ့စည်းခဲ့ခင်းကျင်းပါလိမ့်မည် n Array များရဲ့ထူးခြားပေမယ့်အကြီးမားဆုံးသော element များ။

နမူနာ

arr1[] = {3,7,9,1,4}
arr2[] = {2,8,6,5,3}
{8, 6, 5, 7, 9}
arr1[] = {9,3,2}
arr2[] = {6,4,1}
{6, 4, 9}

algorithm

  1. တစ်ခု Create အခင်းအကျင်း အရွယ်အစား 2 * ၏။
  2. ပထမ ဦး စွာဒုတိယ array element များကို create array နှင့်ပထမ array element များသို့သိမ်းထားပါ။
  3. Array ကို non-ascending sequence ဖြင့်စီပါ။
  4. array ထဲရှိ n တန်ဖိုးများကိုသိမ်းထားပါ အစုံ.
  5. ၎င်းတို့ကို input2 အဖြစ်အစဉ်လိုက်စီစဉ်ပါ။ ပထမ ဦး ဆုံး array0 ကိုယူပြီး၎င်းသည်၎င်းအစုထဲ၌ရှိမနေကိုစစ်ဆေးပြီး ၀ မှ XNUMX တန်းမှတတိယထပ်တွင်သိမ်းဆည်းပါ။th အညွှန်းကိန်း။
  6. ပထမခင်းခြင်းအတွက်အထက်ပါလုပ်ငန်းစဉ်ကိုပြန်လုပ်ပါ။
  7. ထွက်ပေါ်လာတဲ့ခင်းကျင်းပုံနှိပ်ပါ။

ရှင်းလင်းချက်

ငါတို့မှာနှစ်ခုရှိတယ် ကိန်း အခင်းအကျင်း။ ပထမ ဦး ဆုံးခင်းကျင်းထားသည့်အရာအားဤသို့ဖွဲ့စည်းထားသည့်ခင်းကျင်းချက်သည်ဒုတိယခင်းကျင်းမှုဒြပ်စင်ကိုပထမ ဦး ဆုံး၊ ထို့နောက်ပထမအကြိမ်ခင်းကျင်းသောခင်းကျင်းသည့်နည်းလမ်းဖြင့်တိုးမြှင့်ဖို့လိုသည်။ အဲဒီထဲမှာပါသင့်တယ် n Array များမှထူးခြား။ အကြီးမြတ်ဆုံးဒြပ်စင်များ။ Order ကိုဆက်ထိန်းထားသင့်တယ်၊ အကယ်လို့ element ကပထမဆုံးလာရင်ဒုတိယ array မှာလည်းပထမဆုံးလာသင့်တယ်။ ၎င်းကိုဖြေရှင်းရန်အတွက် n အရွယ်အစား n အဖြစ်ပေးထားသောခင်းကျင်းခြင်းနှင့် arrays နှစ်ခုလုံး၏ဒြပ်စင်များကိုသာသိုလှောင်ထားရန်လိုအပ်သည်။

ဒုတိယ array ၏ element များကိုပထမ ဦး ဆုံးကျွန်ုပ်တို့ဖန်တီးထားသော array ထဲသို့သိုလှောင်သိမ်းဆည်းပါ။ ထို့နောက်ပထမ array ၏ element များကိုဖန်တီးထားသော array တွင်သိမ်းပါ။ ကျွန်ုပ်တို့သည်ဖန်တီးရန်ပြုလုပ်ထားသော array ၏တန်ဖိုးများကိုထည့်သွင်းတော့မည်ဖြစ်သောကြောင့်ဤအရာကိုကျွန်ုပ်တို့ပြုလုပ်နေသည်။ ဘာဖြစ်လို့လဲဆိုတော့ဒီ code ကိုဖြေရှင်းဖို့အတွက်ကျွန်တော်တို့ဟာ set တစ်ခုကိုသုံးမယ်။ အစုံသို့ဖန်တီး Array ကိုအားလုံးတန်ဖိုးများကိုထည့်ပြီးနောက်။ ကျွန်ုပ်တို့သည်ခင်းကျင်းမှုကိုမတက်ကြွသောအစီအစဉ်တွင်စီပါလိမ့်မည်။

Set ထဲမှတန်ဖိုးများကို n မှအကြိမ်အထိထည့်ရန်နေရာချပါလိမ့်မည်။ N ကြိမ်အတွက်ဖြစ်သည်၊ ကျွန်ုပ်တို့တွင် sorted ခင်းကျင်းမှုကို non-ascending sequence တွင်ရှိပြီးဖြစ်သည်။ ၎င်းသည်အချို့သောလုပ်ဆောင်မှုများပြုလုပ်ရန်ယခု n element များလိုအပ်သည်။ Set ကို၏သွင်းပြီးနောက်ကျနော်တို့အစု၌အကြီးမြတ်ဆုံး n တန်ဖိုးများရှိသည်။ ယခုကျွန်ုပ်တို့သည်၎င်းတို့တန်ဖိုးကို၎င်းတို့အစဉ်လိုက်အတိုင်းထည့်သွင်းရန်လိုအပ်သည်။ ထို့ကြောင့်ခင်းကျင်းမှုသည်ကျွန်ုပ်တို့၏ ဦး စားပေးဖြစ်သောကြောင့်ပထမ ဦး ဆုံး array ကိုဖြတ်သန်းသွားမည်။ ဒီတော့ကျွန်တော်တို့က array ထဲမှာဒုတိယ element ကတစ်ခုခုကိုရှာမယ်ဆိုလျှင်။ ကျနော်တို့ 0th အနေအထားကနေဖန်တီးသောခင်းကျင်းကို update လိမ့်မည်နှင့်လည်းပထမ ဦး ဆုံးခင်းကျင်းခြင်းအဘို့အစစစ်ဆေးပြီးနှင့် array တတိယ၌၎င်း၏တန်ဖိုးများကို update လုပ်ပါလိမ့်မယ်။

အခု array3 ရဲ့တန်ဖိုးတွေကို array1 နဲ့ print1 ကို update လုပ်ပါ။ ပထမ array ကိုဒုတိယအမြင့်ဆုံးအရာအဖြစ်တိုးမြှင့်လိုက်တယ်။

အကောင်အထည်ဖော်ရေး

အခြား Array ကို သုံး၍ Element များကိုအများဆုံးအသုံးချရန် C ++ Program

#include <iostream>
#include<algorithm>
#include<unordered_set>

using namespace std;

bool compare(int a, int b)
{
    return a > b;
}
void getMaximizeArray(int arr1[], int arr2[], int n)
{
    int arr3[2*n], j = 0;
    for (int i = 0; i < n; i++)
        arr3[j++] = arr1[i];
    for (int i = 0; i < n; i++)
        arr3[j++] = arr2[i];

    unordered_set<int> SET;

    sort(arr3, arr3 + 2 * n, compare);

    int i = 0;
    while (SET.size() != n)
    {
        if (SET.find(arr3[i]) == SET.end())
            SET.insert(arr3[i]);

        i++;
    }
    j = 0;
    for (int i = 0; i < n; i++)
    {
        if (SET.find(arr2[i]) != SET.end())
        {
            arr3[j++] = arr2[i];
            SET.erase(arr2[i]);
        }
    }
    for (int i = 0; i < n; i++)
    {
        if (SET.find(arr1[i]) != SET.end())
        {
            arr3[j++] = arr1[i];
            SET.erase(arr1[i]);
        }
    }
    for (int i = 0; i < n; i++)
        arr1[i] = arr3[i];
}
void printArray(int arr[], int n)
{
    for (int i = 0; i < n; i++)
        cout << arr[i] << " ";
}
int main()
{
    int arr1[] = {3,7,9,1,4};
    int arr2[] = {2,8,6,5,3};
    int n = sizeof(arr1) / sizeof(arr1[0]);
    getMaximizeArray(arr1, arr2, n);
    printArray(arr1, n);
}
8 6 5 7 9

အခြား Array ကို သုံး၍ Element များကိုအမြင့်ဆုံးသတ်မှတ်ရန်အတွက် Java Program

import java.util.HashSet;
import java.util.Arrays;
import java.util.Collections;
import java.util.Comparator;
import java.lang.*;

class arrayMaximize
{
    public static void getMaximizeArray(int arr1[], int arr2[], int n)
    {
        int arr3[]=new int[2*n];
        int j = 0;
        for (int i = 0; i < n; i++)
            arr3[j++] = arr1[i];
        for (int i = 0; i < n; i++)
            arr3[j++] = arr2[i];


        Arrays.sort(arr3);

        HashSet<Integer> SET=new HashSet<>();

        int i = (2*n)-1;
        while (SET.size() != n)
        {
            if (!SET.contains(arr3[i]))
                SET.add(arr3[i]);

            i--;
        }


        j = 0;
        for (int a = 0; a < n; a++)
        {
            if (SET.contains(arr2[a]))
            {
                arr3[j++] = arr2[a];
                SET.remove(arr2[a]);
            }
        }

        for (int b = 0; b < n; b++)
        {
            if (SET.contains(arr1[b]))
            {
                arr3[j++] = arr1[b];
                SET.remove(arr1[b]);
            }
        }
        for (int c = 0; c < n; c++)
            arr1[c] = arr3[c];
    }
    public static void printArray(int arr[], int n)
    {
        for (int k = 0; k < n; k++)
            System.out.print(arr[k]+" ");
    }
    public static void main(String [] args)
    {
        int arr1[] = {3,7,9,1,4};
        int arr2[] = {2,8,6,5,3};
        int n = arr1.length;
        getMaximizeArray(arr1, arr2, n);
        printArray(arr1, n);
    }
}
8 6 5 7 9

အခြား Array ကို သုံး၍ Element များကိုအမြင့်ဆုံးအဖြစ်ရှုပ်ထွေးစွာခွဲခြမ်းစိတ်ဖြာခြင်း

အချိန်ရှုပ်ထွေး

အို (n * log n) ဘယ်မှာ “ n” သည် array အတွင်းရှိ element အရေအတွက်ဖြစ်သည်။

အာကာသရှုပ်ထွေးမှု

အို (ဎ) ဘယ်မှာ “ n” သည် array အတွင်းရှိ element အရေအတွက်ဖြစ်သည်။

ကိုးကား