Cuprins[Ascunde][Spectacol]
Informatica se refera la intelegerea complexitatii algoritmilor si structurilor de date.
Aveți o listă de articole care trebuie sortate, dar nu aveți timp sau resurse pentru a utiliza un algoritm de sortare mai complex.
Sortarea prin inserare este unul dintre cei mai simpli algoritmi de sortare, dar poate fi lentă pentru liste mari.
Implementarea și înțelegerea ușoară au făcut din această metodă preferată printre programatori. Este perfect pentru liste mici sau atunci când aveți nevoie de o soluție rapidă.
În această postare de blog, ne vom uita la complexitatea în timp a sortării inserției. Acest algoritm este folosit pentru a sorta matrice și are un timp de rulare de O(n2). Aceasta înseamnă că complexitatea timpului crește odată cu dimensiunea matricei.
Cu toate acestea, acest algoritm poate fi mai rapid decât alți algoritmi de sortare, cum ar fi sortarea rapidă.
Să aruncăm o privire mai atentă asupra modului în care funcționează sortarea prin inserare!
Ce este algoritmul de sortare prin inserare?
Un element la un moment dat, sortarea prin inserare generează o matrice sortabilă, care este adesea numită listă.
De exemplu, sortarea este aplicată în programe de calculator complicate, cum ar fi compilatoarele, unde ordinea jetoanelor este importantă pentru interpretarea programului.
Cum funcționează sortarea prin inserare?
Când folosim sortarea prin inserare pentru a sorta o matrice, algoritmul începe prin a găsi cel mai mic element din listă și inserându-l în poziția corectă.
Apoi găsește următorul articol cel mai mic și îl introduce în poziția corectă și așa mai departe.
Algoritmul funcționează prin parcurgerea listei, comparând fiecare articol cu cel care îl are înainte.
Dacă articolele sunt în ordinea greșită, algoritmul le schimbă. Apoi verifică dacă lista este sortată și, dacă este, algoritmul se termină.
În practică, sortarea prin inserare este adesea implementată folosind câteva linii de cod, ceea ce o face o alegere populară pentru sortarea matricelor mici. Cu toate acestea, complexitatea timpului trebuie luată în considerare atunci când se utilizează acest algoritm.
Exemplu:
Iată un exemplu despre cum funcționează sortarea prin inserare. Vom folosi următoarea matrice:
1, 2, 3, 4, 5, 6
Algoritmul începe prin a găsi cel mai mic element din listă, care este 1. Apoi îl introduce în poziția corectă, prima poziție. Apoi găsește următorul articol cel mai mic, care este 2. Îl introduce în poziția corectă, care este a doua poziție.
Apoi găsește următorul articol cel mai mic, care este 3. Îl introduce în poziția corectă, care este a treia poziție.
Apoi găsește următorul articol cel mai mic, care este 4. Îl introduce în poziția corectă, care este a patra poziție, și așa mai departe. Lista este acum sortată!
Putem vedea din exemplu că algoritmul are șase comparații și schimburi pentru a sorta lista. Aceasta pentru că este nevoie de n2 comparații și schimburi pentru a sorta o listă de n articole. În acest caz, n=6.
Cum să îmbunătățiți complexitatea timpului de sortare a inserției?
În timp ce sortarea prin inserare are un timp de rulare de O(n2), poate fi îmbunătățit prin utilizarea unui algoritm de sortare mai bun, cum ar fi quicksort.
Quicksort are un timp de rulare O(n log n), care este mult mai rapid decât O(n2).
Cu toate acestea, în unele cazuri, sortarea prin inserare poate fi mai rapidă decât sortarea rapidă.
De exemplu, dacă lista este deja în ordine, sortarea prin inserare va dura mai puțin decât sortarea rapidă.
În practică, sortarea prin inserare este adesea implementată folosind câteva linii de cod, ceea ce o face o alegere populară pentru sortarea matricelor mici.
Cu toate acestea, complexitatea timpului trebuie luată în considerare atunci când se utilizează acest algoritm.
Complexitatea timpului
Complexitatea celui mai rău caz O(n2):
Complexitatea timpului crește odată cu dimensiunea matricei. Este nevoie de n2 comparații și schimburi pentru a sorta o listă de n articole.
De exemplu, dacă avem o matrice de dimensiunea 1000, algoritmul va lua 1,000,000 de comparații și schimburi pentru a sorta matricea.
Complexitatea celui mai bun caz O(n):
Complexitatea timpului este aceeași cu dimensiunea matricei de intrare. eu
t ia n comparații și schimburi pentru a sorta o listă de n articole. De exemplu, luați în considerare o matrice de dimensiunea 5. Algoritmul va lua cinci comparații și schimburi pentru a sorta matricea.
Complexitatea medie a cazului O(n2):
Complexitatea timpului este între cele mai rele și cele mai bune complexități în acest caz.
Este nevoie de n2 comparații și schimburi pentru a sorta o listă de n articole.
Astfel, sortarea prin inserare este un algoritm de sortare stabil.
De ce este stabilă sortarea prin inserție?
Sortarea prin inserare este stabilă, deoarece păstrează ordinea elementelor egale din tabloul de intrare.
Acest lucru este important pentru multe aplicații, cum ar fi regăsirea datelor sau analiza financiară. De exemplu, dacă avem două liste de numere și dorim să le comparăm, trebuie să ne asigurăm că ordinea elementelor este păstrată.
Dacă listele nu sunt sortate, nu le vom compara cu acuratețe.
Lasă un comentariu