Docsity
Docsity

Prepara tus exámenes
Prepara tus exámenes

Prepara tus exámenes y mejora tus resultados gracias a la gran cantidad de recursos disponibles en Docsity


Consigue puntos base para descargar
Consigue puntos base para descargar

Gana puntos ayudando a otros estudiantes o consíguelos activando un Plan Premium


Orientación Universidad
Orientación Universidad


Algoritmos de Ordenación: Selección y Burbujas, Apuntes de Matemáticas

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

2016/2017

Subido el 05/09/2017

marc153
marc153 🇪🇸

1 documento

1 / 36

Toggle sidebar

Esta página no es visible en la vista previa

¡No te pierdas las partes importantes!

bg1
Descargado en:
patatabrava.com
ALGORISMICA (UB)
APUNTS ALGORISMICA - 6
VITRIA, JORDI 16-17
pf3
pf4
pf5
pf8
pf9
pfa
pfd
pfe
pff
pf12
pf13
pf14
pf15
pf16
pf17
pf18
pf19
pf1a
pf1b
pf1c
pf1d
pf1e
pf1f
pf20
pf21
pf22
pf23
pf24

Vista previa parcial del texto

¡Descarga Algoritmos de Ordenación: Selección y Burbujas y más Apuntes en PDF de Matemáticas solo en Docsity!

Descargado en:

patatabrava .com

ALGORISMICA (UB)

APUNTS ALGORISMICA - 6

VITRIA, JORDI 16-

Algorísmica

Algorismes i força bruta

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.

A
[0] ,... ,
A

[i‐1] ↔

A

[i],... ,

A

[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

Quin dels dos algorismes d’ordenació

fa més intercanvis?

Ordenació per força bruta: Ordenació amb el mètode de labombolla.^ •

El

comportament

de

l’ordenació

per

bombolla

o

per

selecció

són

aproximadament equivalents

, tot i que el

de la bombolla fa

molts més intercanvis

Podem fer una petita millora al mètode dela

bombolla:

si

en

una

passada

no

intercanviem res, podem acabar!

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.