sortarea inserturi
[Articolul] Algoritmul
Provocarea este aceasta: există o parte dintr-o matrice care a fost deja sortate, și doriți să inserați restul elementelor matrice din partea sortat, menținând în același timp rânduială. Pentru a face acest lucru, la fiecare pas al algoritmului vom alege unul dintre elementele de date de intrare și lipiți-l într-o nouă poziție într-o sortate deja parte din matrice, până când întregul set de date de intrare nu vor fi sortate. Metoda de selecție a următorului element al șirului sursă este arbitrară, dar este, de obicei, (și pentru a obține un algoritm de sortare stabil), elementele sunt inserate în ordinea apariției lor în matrice de intrare.
Deoarece numai elementele învecinate pot fi schimbate între ele în cursul algoritmului, fiecare partajare a reduce numărul de inversiuni pe unitate. În consecință, numărul de schimburi este numărul de inversiuni din matrice sursă, indiferent de punerea în aplicare de acest fel. Numărul maxim de inversiuni din matrice ale cărei elemente sunt ordonate nonincreasing. Numărul de inversiuni din această matrice.
Algoritmul funcționează pentru, în cazul în care - numărul de schimburi de elemente de intrare matrice egal cu numărul de inversiuni. În mijloc și în cel mai rău caz - pentru. Estimări minime apar în cazul unei secvențe ordonate de elemente ale originalului, cel mai rău - atunci când acestea sunt în ordine inversă.
[Articolul] pseudocod
[Regula] Exemplu de lucru
Un exemplu de algoritm pentru matrice
Prima trecere (al doilea membru împinge -2)
Algoritmul compară al doilea membru cu primul și schimba locurile lor.
Al doilea pasaj (al treilea element împinge -4)
Acesta compară al treilea cu al doilea și swap-uri
Al doilea și primul tip, swap-ul nu este necesară
A treia trecere (împins patra -3)
Schimbă locurile al patrulea și al treilea
Schimbă a treia și a doua locație
Al doilea și primul tip, swap-ul nu este necesară
A patra trecere (Al cincilea element împinge -1)
Modifică a cincea și a patra locuri
Schimbă locurile al patrulea și al treilea
Schimbă a treia și a doua locație
Se schimbă prima și a doua poziție. Matricea este sortat.
[Articolul] Optimizări
[Articolul] inserați binare
Acum, în loc de o căutare liniară pentru poziția, vom folosi o căutare binară. Prin urmare, numărul de comparații pentru a schimba de la. Numărul de comparații a scăzut în mod semnificativ, dar pentru a pune elementul pe locul său, încă mai trebuie să se deplaseze un număr mare de elemente. Ca urmare, timpul de execuție a algoritmului în asimptotic nu a scăzut. insert binar utilizat în mod avantajos numai în cazul în care comparația ia o mulțime de timp în comparație cu trecerea. De exemplu, atunci când folosim o serie de numere întregi lungi.
[Regula] inserare două sensuri
Esența acestei metode este că în loc de partea sortată a matrice, vom folosi zona de ieșire. Primul element este plasat în mijlocul zonei de ieșire și locația pentru următorul element este eliberat de elementele de deplasare la stânga sau la dreapta pentru a în cazul în care mai favorabile. Un exemplu de un set de elemente
Prima trecere (al doilea membru împinge -5)
Deoarece câmpul de ieșire nu are elemente, pur și simplu adăuga elementul.
Al doilea pasaj (al treilea element împinge -7)
Cu binar de căutare găsi poziția și poziția extremă, deoarece nu trebuie să se miște nimic.
A treia trecere (împins patra -3)
Cu binar de căutare găsi poziția și poziția extremă, deoarece nu trebuie să se miște nimic.
A patra trecere (Al cincilea element împinge -4)
Cu căutarea binară găsi poziția. Distanța de la marginea din stânga a zonei de afișare este mai mică decât la trecerea din partea dreapta, apoi la stânga.
A patra trecere (al cincilea element de împinge -6)
Distanța până la marginea din dreapta este mai mică decât la stânga, mutați astfel partea dreapta.
După cum se poate observa ieșirea structurii câmpului este similar cu descompunerile. și anume, vom alege marginea care este mai aproape de elementul nostru, iar apoi se adaugă această parte a elementului nostru și mutați-l. După cum putem vedea în acest exemplu, a fost nevoie să se miște întregului element. Datorită faptului că, pentru a insera elementul-lea va necesita schimbări în cel mai rău caz, în schimb și numărul final cerut în cel mai rău caz, operațiunile vor fi.