د سرسري عناصرو ګ Multi شمیر پیښې د لومړي ځل لخوا ترتیب شوي


مشکل کچه په اسانۍ سره
په مکرر ډول دننه پوښتل کیږي اکولایټ ایڈوب ترلاسه کړئ Amazon دهلي څلورکیټونه
پیشه هاش

تاسو ته یوه پوښتنه درکول کیږي په کوم کې چې تاسو بې تنظیم شوي یاست سور د شمیرو ډیری پیښو سره. دنده دا ده چې د لومړي پیښو په واسطه ترتیب شوي د صف عناصرو ډیری ډیری پیښې د ګروپ کولو لپاره. په ورته وخت کې ، امر باید ورته وي لکه څنګه چې شمیر راځي.

بېلګه

تفتیش:

[2 ، 3,4,3,1,3,2,4،XNUMX،XNUMX،XNUMX،XNUMX،XNUMX،XNUMX]

محصول:

[2 2 3 3 3 4 4 1]

تفتیش:

[5,4,1,5,4,1,5,6]

محصول:

[5 5 5 4 4 1 1 6]

الګوریتم

  1. اعلامیه هش میپ.
  2. صف ځنډ کړئ او ټول عناصر او د دې فریکونسۍ یې په هاش میپ کې واچوئ.
  3. د صف ځنډولو پرمهال او د هر عنصر فریکونسۍ ترلاسه کړئ.
    1. دا کیلي د دې فریکونسي وختونو ته چاپ کړئ.
    2. هغه آرر [i] (کیلي) لرې کړئ.

د صف عناصرو ګروپ ډیری پیښو لپاره توضیحات

موږ د دې لپاره هشینګ کارولو ته ځو. هشینګ د عناصرو ذخیره کولو ب providesه چمتو کوي چې د کلي ارزښت ارزښت جوړه وي. پدې پوښتنې کې ، موږ د کلي عناصرو په توګه کليمه او د هر عنصر د فریکونسي په توګه یو ارزښت کار کوو. موږ په ساده ډول عنصر دننه کوو که چیرې دا د هش میز کې شتون نلري. نور نو د عنصر شمیرنه (کیلي-ارزښت) ډیروئ.

لومړی ، موږ به د هش میپ اعلان وکړو چې "زما میپ" ووایی. موږ بیا ټول صف راجمع کوو او شمیرنه او زیرمه کوو د فریکونسي د هر عنصر.

راځئ چې یو مثال په پام کې ونیسو او په دې پوه شو.

بېلګه

آر آر = [5 ، 4 ، 1 ، 5 ، 4 ، 1 ، 5 ، 6]

i = 0 ، تیر [i] = 5

زما میپ = {5: 1}

i = 1 ، تیر [i] = 4

زما میپ = {4: 1,5،1: XNUMX

i = 2 ، تیر [i] = 1

زما میپ = {1: 1,4،1,5: 1،XNUMX: XNUMX}

i = 3 ، تیر [i] = 5

زما میپ = {1: 1,4،1,5: 2،XNUMX: XNUMX}

i = 4 ، تیر [i] = 4

زما میپ = {1: 1,4،2,5: 2،XNUMX: XNUMX}

i = 5 ، تیر [i] = 1

زما میپ = {1: 2,4،2,5: 2،XNUMX: XNUMX}

i = 6 ، تیر [i] = 5

زما میپ = {1: 2,4،2,5: 3،XNUMX: XNUMX}

i = 6 ، تیر [i] = 6

myMap={1:2,4:2,5:3,6:1}

اوس موږ به پدې کې مایپ میپ او ارزښتونه ولرو.

موږ به په یو صف کې د ترتیب شوي عنصر سره په یو صف کې د بیا ځغلولو وروسته فریکوینسي ترلاسه کړو. د هر صف عنصر د دې فریکونسي سره اخیستل او د دې فریکونسي وخت پورې لوپ جوړ کړئ او د ټولو صفونو عناصرو له چاپولو وروسته د فریکونسي وختونو پورې دا صف کلیمه لرې کړئ ترڅو دا نور په راتلونکی تعقیب کې چاپ نشي.

آرر [i] = 5 فریکوینسي = 3

5 به 3 ځله چاپ شي ، بیا به موږ دا کیلي په خپل میپ کې لرې کړو ، نو هرکله چې موږ 5 په صف کې ولولئ نو دا به په هشامپ کې شتون ونلري او نه یې چاپوي.

آرر [i] = 4 فریکوینسي = 2

4 به چاپ شي ، 2 ځله ، کلي به زما میپ کې لیرې شي ، نو هرکله چې موږ 4 په صف کې ولولئ نو دا به په هش میپ کې موجود نه وي او نه یې چاپوي.

آرر [i] = 1 فریکوینسي = 2

1 به 2 ځله چاپ شي ، بیا به موږ دا کیلي په خپل میپ کې لرې کړو ، نو هرکله چې موږ 5 په صف کې ولولئ او دا به په هش میپ کې موجود نه وي او نه یې چاپوي.

اوس 5 په صف کې راځي مګر دا به په هش میپ کې شتون ونلري او ورته پیښیږي او ترهغې پورې هیڅ نه ترسره کوي تر هغه چې عنصر ونه موندل شي کوم چې په هش میپ کې شتون لري.

آرر [i] = 6 فریکوینسي = 1

6 به چاپ شي ، 1 ځل ، کلیدي به زما په نقشه کې حذف شي ، نو هرکله چې موږ په صف کې 4 ولولئ نو دا به په هشامپ کې شتون ونلري او نه یې چاپوي.

موږ به اوس مهال د 5 5 5 4 4 1 1 6 په توګه محصول ولرو.

تطبیق

C ++ برنامې د لومړي عناصر لخوا ترتیب شوي د صف عناصرو ګروپ ډیری پیښو لپاره

#include<iostream>
#include<unordered_map>

using namespace std;
void arrangeInOrder(int arr[], int n)
{
    unordered_map<int, int> myMap;

    for (int i=0; i<n; i++)
    {
        myMap[arr[i]]++;
    }
    for (int i=0; i<n; i++)
    {
        int count = myMap[arr[i]];
        for (int j=0; j<count; j++)
            cout<<arr[i]<< " ";

        myMap.erase(arr[i]);
    }
}
int main()
{
    int arr[] = {10, 5, 3, 10, 10, 4, 1, 3};
    int n=sizeof(arr)/sizeof(arr[0]);
    arrangeInOrder(arr,n);
    return 0;
}
10 10 10 5 3 3 4 1

جاوا پروګرام

import java.util.HashMap;

class multipleOccurences
{
    public static void arrangeInOrder(int arr[])
    {
        HashMap<Integer, Integer> myMap= new HashMap<Integer, Integer>();

        for (int i=0; i<arr.length; i++)
        {
            Integer current = myMap.get(arr[i]);
            if (current == null)
                current = 0;

            myMap.put(arr[i], current + 1);
        }
        for (int i=0; i<arr.length; i++)
        {
            Integer count = myMap.get(arr[i]);
            if (count != null)
            {
                for (int j=0; j<count; j++)
                {
                    System.out.print(arr[i] + " ");
                }
                myMap.remove(arr[i]);
            }
        }
    }
    public static void main (String[] args)
    {
        int arr[] = {10, 5, 3, 10, 10, 4, 1, 3};
        arrangeInOrder(arr);
    }
}
10 10 10 5 3 3 4 1

د صف عناصرو ګروپ ډیری پیښو لپاره د پیچلو تحلیلونه

د وخت پیچلتیا

اې (N) هلته "n" په صف کې د عناصرو شمیر دی.

د ځای پیچلتیا

اې (N) هلته "n" په صف کې د عناصرو شمیر دی.

ماخذ