Բովանդակություն:

Ինչպե՞ս եք դույլով տեսակավորում:
Ինչպե՞ս եք դույլով տեսակավորում:
Anonim

Դույլի տեսակավորումն աշխատում է հետևյալ կերպ

  1. Ստեղծեք զանգված սկզբնական դատարկ » դույլեր ".
  2. Scatter. Անցեք սկզբնական զանգվածի վրայով, յուրաքանչյուր առարկա դնելով դրա մեջ դույլ .
  3. Տեսակավորել յուրաքանչյուրը ոչ դատարկ դույլ .
  4. Հավաքեք: Այցելեք դույլեր կարգով և բոլոր տարրերը նորից դրեք սկզբնական զանգվածի մեջ:

Ավելին, ի՞նչ է դույլ տեսակավորումը օրինակով:

Բացի այդ, դուք կգտնեք աշխատանք օրինակներ -ից դույլ տեսակավորում C, C++, Java և Python-ում: Դույլի տեսակավորում է տեսակավորում տեխնիկան, որը տեսակավորում տարրերը նախ բաժանելով տարրերը մի քանի խմբերի, որոնք կոչվում են դույլեր . Տարրերը սկզբում ցրված են դույլեր ապա տարրերը դույլեր են տեսակավորված.

Ավելին, որտեղ է օգտագործվում դույլային տեսակավորումը: Դույլի տեսակավորում հիմնականում օգտակար է, երբ մուտքագրումը միատեսակ բաշխված է տիրույթում: Օրինակ, հաշվի առեք հետևյալ խնդիրը. Տեսակավորել լողացող կետով թվերի մեծ հավաքածու, որոնք գտնվում են 0.0-ից 1.0 միջակայքում և հավասարաչափ բաշխված են տիրույթում:

Հաշվի առնելով սա՝ ինչպե՞ս եք պարզում դույլերի քանակը դույլով տեսակավորելու համար:

Եթե դույլեր ունի երկարություն 2^k, յուրաքանչյուրը դույլ ունի մեկ չափս, և դույլ տեսակավորում դեգեներացվում է հաշվելու տեսակավորել . Այսպիսով, դուք ցանկանում եք յուրաքանչյուրը դույլ չափը լինի 1-ից ավելի. Եթե ունենք n դույլեր , և msbits(x, k) վերադարձնում է 2^k արժեք, ապա յուրաքանչյուրը դույլ չափը 2^k/n է։

Որքա՞ն է դույլային տեսակավորման ժամանակային բարդությունը:

Միջին ժամանակի բարդություն համար Դույլի տեսակավորում O(n + k) է: Ամենավատը ժամանակի բարդություն O (n²) է: Տիեզերքը բարդություն համար Դույլի տեսակավորում O(n+k) է:

Խորհուրդ ենք տալիս: