Turinys:

Kaip apskaičiuojamas sujungimo rūšiavimo sudėtingumas?
Kaip apskaičiuojamas sujungimo rūšiavimo sudėtingumas?
Anonim

2 atsakymai. Mazgo A[L, R] padalijimas į du mazgus užtrunka R−L+1 laiko ir tada susiliejimas du antriniai mazgai A[L, M] ir A[M+1, R] vėl užtrunka A[R−L+1] laiką. Taigi kiekvieno mazgo operacijų skaičius algoritmas atlieka yra lygus dvigubam masyvo, atitinkančio tą mazgą, dydžiui.

Kalbant apie tai, kaip veikia sujungimo rūšiavimas?

Štai kaip sujungimo rūšiavimas naudoja „skaldyk ir valdyk“:

  1. Padalinkite rasdami padėties viduryje tarp p ir r skaičių q.
  2. Užkariaukite rekursyviai rūšiuodami pogrupius kiekvienoje iš dviejų subproblemų, sukurtų padalijimo žingsniu.
  3. Sujunkite, sujungdami dvi surūšiuotas pogrupes atgal į vieną surūšiuotą pogrupių masyvą[p.

Be to, koks yra didelis sujungimo rūšiavimo O sudėtingumas? Sujungti Rūšiuoti yra arklidė rūšiuoti o tai reiškia, kad tas pats elementas masyve išlaiko savo pradines pozicijas vienas kito atžvilgiu. Bendras laikas sudėtingumo apie Sujungti rūšiavimą yra O (nLogn). Jis yra efektyvesnis, nes blogiausiu atveju taip pat veikia veikimo laikas O (nlogn) Erdvė sudėtingumo apie Sujungti rūšiavimą yra O (n).

koks yra sujungimo rūšiavimo sudėtingumas blogiausiu atveju?

n*log(n)

Kiek palyginimų atlieka sujungimo rūšiavimas?

Kai pritrūksta elementų viename iš sąrašų, likusius elementus dedame į paskutines angas surūšiuoti sąrašą. Kaip rezultatas, susiliejimas dviem sąrašams, kuriuose iš viso yra n elementų, reikia ne daugiau kaip n-1 palyginimai.

Rekomenduojamas: