




























Prepara tus exámenes y mejora tus resultados gracias a la gran cantidad de recursos disponibles en Docsity
Gana puntos ayudando a otros estudiantes o consíguelos activando un Plan Premium
Prepara tus exámenes
Prepara tus exámenes y mejora tus resultados gracias a la gran cantidad de recursos disponibles en Docsity
Prepara tus exámenes con los documentos que comparten otros estudiantes como tú en Docsity
Encuentra los documentos específicos para los exámenes de tu universidad
Estudia con lecciones y exámenes resueltos basados en los programas académicos de las mejores universidades
Responde a preguntas de exámenes reales y pon a prueba tu preparación
Consigue puntos base para descargar
Gana puntos ayudando a otros estudiantes o consíguelos activando un Plan Premium
Comunidad
Pide ayuda a la comunidad y resuelve tus dudas de estudio
Ebooks gratuitos
Descarga nuestras guías gratuitas sobre técnicas de estudio, métodos para controlar la ansiedad y consejos para la tesis preparadas por los tutores de Docsity
Una descripción detallada de los algoritmos de ordenación por selección y burbujas, incluyendo su funcionamiento, complexidad y comparación entre ellos. Además, se incluye un ejemplo de cómo implementar el algoritmo de ordenación por selección en python.
Tipo: Apuntes
1 / 36
Esta página no es visible en la vista previa
¡No te pierdas las partes importantes!





























Descargado en:
patatabrava .com
ALGORISMICA (UB)
APUNTS ALGORISMICA - 6
VITRIA, JORDI 16-
Algorísmica
Jordi Vitrià
Grau d'Enginyeria Informàtica
Facultat de Matemàtiques
Ordenar
és una de les operacions més repetides per
qualsevol ordinador! •
Ordenar una llista de persones.
Ordenar els registres d’una base de dades per data.
Ordenar les factures per import.
Ordenar pàgines web a un cercador.
Ordenar productes en un recomanador.
Etc. Ordenació d’una llista És més, ordenar és un pas previ per moltes altresoperacions computacionals!
Hi ha molts algorismes d’ordenació. Anem a veure’ndos basats en la
força bruta
Ordenació d’una llista
Name
Average
Worst
Method
Bubble sort
O(n
2 )
O(n
2 )
Exchanging
Cocktail sort
—
O(n
2 )
Exchanging
Comb sort
—
—
Exchanging
Gnome sort
—
O(n
2 )
Exchanging
Selection sort
O(n
2 )
O(n
2 )
Selection
Insertion sort
O(n
2 )
O(n
2 )
Insertion
Shell sort
—
O(n log
2
n)
Insertion
Binary tree sort
O(n log n)
O(n log n)
Insertion
Library sort
O(n log n)
O(n
2 )
Insertion
Merge sort
O(n log n)
O(n log n)
Merging
In‐place merge sort
O(n log n)
O(n log n)
Merging
Heapsort
O(n log n)
O(n log n)
Selection
Smoothsort
—
O(n log n)
Selection
Quicksort
O(n log n)
O(n
2 )
Partitioning
Introsort
O(n log n)
O(n log n)
Hybrid
Patience sorting
—
O(n log n)
Insertion & Selection
Strand sort
O(n log n)
O(n
2 )
Selection
Tournament sort
O(n log n)
O(n log n)
Selection
Ordenació per força bruta: Ordenació per selecció.^ 1.
Trobar l’element més petit dela llista.
Intercanviar l’element a laprimera posició amb l’elementmés petit. Ara aquest és a laprimera posició.
Repetir els passos 1 i 2 amb lallista després de descartar elprimer element que ja estàordenat.
0
1
2
3
4
5
6
7
8
23
17
5
90
12
44
38
84
77
min
primer intercanviar
0
1
2
3
4
5
6
7
8
5
17
23
90
12
44
38
84
77
ordenat
desordenat
Resultatd’unapassada.
Ordenació per força bruta: Ordenació per selecció.
0
1
2
3
4
5
6
7
8
5
17
23
90
12
44
38
84
77
5
12
23
90
17
44
38
84
77
2
5
12
17
90
23
44
38
84
77
3
5
12
17
23
38
44
77
84
90
7
5
12
17
23
38
44
77
84
90
1 8
Passada #
Ordenació per força bruta: Ordenació per selecció.Complexitat
de l’algorisme d’ordenació per selecció:
L’operació més important és una comparació:
if l[j] < l[min]: min = j
I el nombre de vegades que s’executa és:Evidentment l’algorisme és quadràtic
tot i que només
fem
O(n)
intercanvis a la llista.
)
(
2
2
1
2
) 1
(
1
2
...
) 2 ( ) 1 ( ) (
2
2
1
2
n O n n n n i i n n n n C
n i
n i
Ordenació per força bruta: Ordenació amb el mètode de labombolla. Hi ha un altre estratègia «simple» per ordenar,que simula el comportament d’una bombolla
...
La idea és comparar elements adjacents a la llista i intercanviar‐los si estan mal ordenats:
a la primera passada l’element més
gran serà l’últim. A la passada
i^
tindrem els elements de
n‐i
fins
n‐
ordenats:
Seguint aquesta estratègia, en n‐1 passades obtenim una llistaordenada.
[i‐1] ↔
[i],... ,
[n‐1]
?
A
[0] ,... ,
A
[j] ↔
A
[j+1],... ,
A
[n‐i‐1] |
A
[n‐i] ≤... ≤A[n‐1]
Ordenació per força bruta: Ordenació amb el mètode de labombolla.
def bubble_sort(l):
for i in range(len(l)-1):
for j in range(len(l)-1-i):
if l[j] > l[j+1]:
l[j],l[j+1]=l[j+1],l[j]
a=[8,7,6,5,4,3,2]>>> bubble_sort(a)>>> a[2, 3, 4, 5, 6, 7, 8]
Ordenació per força bruta: Ordenació amb el mètode de labombolla.^ En el pitjor cas, el bucle exterior s’executa
n
vegades per a fer
n
‐1 passades.
Per cada execució del bucle exterior, l’interior
s’executa
n‐i
vegades:
El
nombre
de
comparacions a cada passada consecutiva és
n
n
Sumant tenim el nombre total de comparacions:
2
1
n O n n i n n n C
n i
15
Cerca exhaustiva Quan no hi ha cap algorisme eficient per resoldre unproblema ens enfrontem a un problema de cerca perforça bruta:
enumerar totes les solucions i trobar la
millor. Exemple: •
Coloració d’un graf
: Donat un graf G amb n vèrtexs,
m arcs i una paleta de k colors, decidir si és possibleassignar a cada vèrtex un color de manera que tots elsarcs tenen colors diferents als seus extrems.
Cerca exhaustiva^ La
cerca exhaustiva
(o
cerca per força bruta
consisteix en una exploració sistemàtica de
l’espai
de solucions possibles
a un problema donat.
Pot dividir‐se en varies parts:
com generar totes
les
possibles
solucions
seleccionar
les
que
compleixen unes determinades restriccions
triar
la millor
La
resolució
de
problemes
per
cerca
exhaustiva
sol
comportar l’exploració d’espais molt grans de solucions,per la qual cosa resulta pràctica només per a instànciespetites del problema.