Taula de continguts[Amaga][Espectacle]
La informàtica consisteix a comprendre les complexitats dels algorismes i les estructures de dades.
Teniu una llista d'elements que cal ordenar, però no teniu temps ni recursos per utilitzar un algorisme d'ordenació més complex.
L'ordenació per inserció és un dels algorismes d'ordenació més senzills, però pot ser lent per a llistes grans.
La fàcil implementació i comprensió han fet d'aquest mètode un dels preferits entre els programadors. És perfecte per a llistes petites o quan necessiteu una solució ràpida.
En aquesta entrada del blog, veurem la complexitat temporal de l'ordenació d'insercions. Aquest algorisme s'utilitza per ordenar matrius i té un temps d'execució de O(n2). Això vol dir que la complexitat del temps augmenta amb la mida de la matriu.
Tanmateix, aquest algorisme pot ser més ràpid sovint que altres algorismes d'ordenació, com ara quicksort.
Mirem més de prop com funciona l'ordenació per inserció!
Què és l'algoritme d'ordenació d'inserció?
Un element a la vegada, l'ordenació per inserció genera una matriu ordenable, que sovint s'anomena llista.
Per exemple, l'ordenació s'aplica en programes informàtics complicats, com ara compiladors, on l'ordre de les fitxes és important per a la interpretació del programa.
Com funciona l'ordenació d'inserció?
Quan fem servir l'ordenació per inserció per ordenar una matriu, l'algorisme comença per trobar l'element més petit de la llista i inserint-lo a la posició correcta.
A continuació, troba el següent element més petit i l'insereix a la posició correcta, i així successivament.
L'algorisme funciona fent un bucle per la llista, comparant cada element amb el que hi ha abans.
Si els elements estan en l'ordre incorrecte, l'algoritme els intercanvia. A continuació, comprova si la llista està ordenada i, si és així, l'algorisme s'acaba.
A la pràctica, l'ordenació per inserció sovint s'implementa utilitzant unes poques línies de codi, la qual cosa la converteix en una opció popular per ordenar matrius petites. Tanmateix, s'ha de tenir en compte la complexitat del temps quan s'utilitza aquest algorisme.
Exemple:
Aquí teniu un exemple de com funciona l'ordenació per inserció. Utilitzarem la següent matriu:
1, 2, 3, 4, 5, 6
L'algorisme comença per trobar l'element més petit de la llista, que és 1. Després l'insereix a la posició correcta, la primera posició. A continuació, troba el següent element més petit, que és 2. L'insereix a la posició correcta, que és la segona posició.
A continuació, troba el següent element més petit, que és 3. L'insereix a la posició correcta, que és la tercera posició.
A continuació, troba el següent element més petit, que és 4. L'insereix a la posició correcta, que és la quarta posició, i així successivament. La llista ja està ordenada!
Podem veure a partir de l'exemple que l'algorisme fa sis comparacions i intercanvis per ordenar la llista. Això és perquè es necessita n2 comparacions i intercanvis per ordenar una llista de n elements. En aquest cas, n=6.
Com millorar la complexitat del temps d'ordenació d'inserció?
Mentre que l'ordenació d'inserció té un temps d'execució de O (n2), es pot millorar utilitzant un algorisme d'ordenació millor, com ara quicksort.
Quicksort té un temps d'execució O(n log n), que és molt més ràpid que O(n2).
Tanmateix, en alguns casos, l'ordenació per inserció pot ser més ràpida que la classificació ràpida.
Per exemple, si la llista ja està en ordre, l'ordenació d'inserció trigarà menys temps que la classificació ràpida.
A la pràctica, l'ordenació per inserció sovint s'implementa utilitzant unes poques línies de codi, la qual cosa la converteix en una opció popular per ordenar matrius petites.
Tanmateix, s'ha de tenir en compte la complexitat del temps quan s'utilitza aquest algorisme.
Complexitats temporals
Complexitat del pitjor cas O(n2):
La complexitat del temps augmenta amb la mida de la matriu. Es necessita n2 comparacions i intercanvis per ordenar una llista de n elements.
Per exemple, si tenim una matriu de mida 1000, l'algoritme necessitarà 1,000,000 de comparacions i intercanvis per ordenar la matriu.
Complexitat del millor cas O(n):
La complexitat temporal és la mateixa que la mida de la matriu d'entrada. jo
t pren n comparacions i intercanvis per ordenar una llista de n elements. Per exemple, considereu una matriu de mida 5. L'algorisme farà cinc comparacions i intercanvis per ordenar la matriu.
Complexitat mitjana del cas O(n2):
En aquest cas, la complexitat del temps es troba entre el pitjor i el millor dels casos.
Es necessita n2 comparacions i intercanvis per ordenar una llista de n elements.
Per tant, l'ordenació per inserció és un algorisme d'ordenació estable.
Per què és estable l'ordenació d'inserció?
L'ordenació d'inserció és estable perquè conserva l'ordre dels elements iguals a la matriu d'entrada.
Això és important per a moltes aplicacions, com ara la recuperació de dades o l'anàlisi financera. Per exemple, si tenim dues llistes de nombres i volem comparar-les, hem d'assegurar-nos que es conserva l'ordre dels elements.
Si les llistes no estan ordenades, no les compararem amb precisió.
Deixa un comentari