1 Ordenando. 2 Sorting Input Una secuencia de numeros a 1, a 2, a 3, …, a n Output Una...

31
1 Ordenando

Transcript of 1 Ordenando. 2 Sorting Input Una secuencia de numeros a 1, a 2, a 3, …, a n Output Una...

Page 1: 1 Ordenando. 2 Sorting Input Una secuencia de numeros a 1, a 2, a 3, …, a n Output Una permutación (reorden) a’ 1, a’ 2, a’ 3, …, a’ n de la input, tal.

1

Ordenando

Page 2: 1 Ordenando. 2 Sorting Input Una secuencia de numeros a 1, a 2, a 3, …, a n Output Una permutación (reorden) a’ 1, a’ 2, a’ 3, …, a’ n de la input, tal.

2

Sorting

• Input• Una secuencia de numeros a1, a2, a3, …, an

• Output• Una permutación (reorden) a’1, a’2, a’3, …, a’n

de la input, tal que a’1 < a’2 < a’3 < …< a’n

• Ejemplo• Input: 8 5 2 3 9 6 1• Output: 1 2 3 5 6 8 9

Page 3: 1 Ordenando. 2 Sorting Input Una secuencia de numeros a 1, a 2, a 3, …, a n Output Una permutación (reorden) a’ 1, a’ 2, a’ 3, …, a’ n de la input, tal.

3

Selection Sort

• n-1 fases, desde 1 hasta n-1

• En la fase p, hallamos el p’esimo, nº más pequeño y lo ponemos en la posición p.

• O(n2), considerando, O(n) fases, y donde cada fase necesita O(n) para hallar el p’esimo nº más pequeño.

7 5 2 9 1 3

1 5 2 9 7 3Fase 1

1 2 5 9 7 3Fase2

1 2 3 9 7 5Fase 3

1 2 3 5 7 9Fase 4

1 2 3 5 7 9Fase 5

Page 4: 1 Ordenando. 2 Sorting Input Una secuencia de numeros a 1, a 2, a 3, …, a n Output Una permutación (reorden) a’ 1, a’ 2, a’ 3, …, a’ n de la input, tal.

4

Bubble Sort

• n-1 fases, de 1 hasta n-1

• En la fase p, escanea la lista de izq. a der. Si el nº de la posición actual es más grande que la siguiente los intercambia.

7 5 2 9 1 3

5 7 2 9 1 3posicion 1

5 2 7 9 1 3posicion 2

5 2 7 9 1 3posicion 3

5 2 7 1 9 3posicion 4

5 2 7 1 3 9posicion 5

Page 5: 1 Ordenando. 2 Sorting Input Una secuencia de numeros a 1, a 2, a 3, …, a n Output Una permutación (reorden) a’ 1, a’ 2, a’ 3, …, a’ n de la input, tal.

5

fase 2

5 2 7 1 3 9

2 5 7 1 3 9

2 5 7 1 3 9

2 5 1 7 3 9

2 5 1 3 7 9

2 5 1 3 7 9

2 1 5 3 7 9

2 1 3 5 7 9

fase 3

1 2 3 5 7 9

1 2 3 5 7 9

fase 4

1 2 3 5 7 9

fase 5

• En la fase p, el p’ésimo elemento más grande deberá estar en la posición correcta.

• O(n2)

Page 6: 1 Ordenando. 2 Sorting Input Una secuencia de numeros a 1, a 2, a 3, …, a n Output Una permutación (reorden) a’ 1, a’ 2, a’ 3, …, a’ n de la input, tal.

6

Insertion sort

• n-1 fases, de 2 hasta n

7 5 2 3 1 92 5 7 3 1 9antes fase 4

2 3 5 7 1 9Despues fase 4

Page 7: 1 Ordenando. 2 Sorting Input Una secuencia de numeros a 1, a 2, a 3, …, a n Output Una permutación (reorden) a’ 1, a’ 2, a’ 3, …, a’ n de la input, tal.

7

7 5 2 3 1 9

5 7 2 3 1 9

fase 2

2 5 7 3 1 9

2 3 5 7 1 9

2 3 5 71 9

2 3 5 71 9Despues fase 6

fase 3

fase 4

fase 5

fase 6

7 5 2 3 1 9

• Después de fase p, elementos en posiciones 1 hasta la p-1 están ordenados.

• O(n2)

Page 8: 1 Ordenando. 2 Sorting Input Una secuencia de numeros a 1, a 2, a 3, …, a n Output Una permutación (reorden) a’ 1, a’ 2, a’ 3, …, a’ n de la input, tal.

8

Inversion

• Bubble Sort, Insertion Sort, y Selection sort usan • Inversiones, es decir , en una secuencia

a(1), a(2), …, a(n) con algun orden (i,j) tal que

i < j , pero a(i) > a(j)

• Ejemplo: 24, 35, 12, 30• (1,3), (2,3), (2,4)

• Cuál es el nº de inversiones en promedio?

Page 9: 1 Ordenando. 2 Sorting Input Una secuencia de numeros a 1, a 2, a 3, …, a n Output Una permutación (reorden) a’ 1, a’ 2, a’ 3, …, a’ n de la input, tal.

9

Inversion Ejemplo

Page 10: 1 Ordenando. 2 Sorting Input Una secuencia de numeros a 1, a 2, a 3, …, a n Output Una permutación (reorden) a’ 1, a’ 2, a’ 3, …, a’ n de la input, tal.

10

Heapsort

• Algoritmos involucrados

• Buildheap: O(n)• n -DeleteMins: n -O(log n)

• O(n log n) worst-case running time

Page 11: 1 Ordenando. 2 Sorting Input Una secuencia de numeros a 1, a 2, a 3, …, a n Output Una permutación (reorden) a’ 1, a’ 2, a’ 3, …, a’ n de la input, tal.

11

11

15

47 30

24

28 33

11 15 24 47 30 28 33

15

30

47 33

24

28

11

15 30 24 47 33 28

11 15

24

30

47 33

28

24 30 28 47 33

11 15 24

28

30

47

33

28 30 33 47

Page 12: 1 Ordenando. 2 Sorting Input Una secuencia de numeros a 1, a 2, a 3, …, a n Output Una permutación (reorden) a’ 1, a’ 2, a’ 3, …, a’ n de la input, tal.

12

11

15

47 30

24

28 33

11 15 24 47 30 28 33

24

30

47 33

28

28

30

47

33

15

30

47 33

24

28

15 30 24 47 33 28 11

24 30 28 47 33 15 11 28 30 33 47 24 15 11

Para ordenar en orden creciente?

Page 13: 1 Ordenando. 2 Sorting Input Una secuencia de numeros a 1, a 2, a 3, …, a n Output Una permutación (reorden) a’ 1, a’ 2, a’ 3, …, a’ n de la input, tal.

13

Mergesort

Mergesort(A:array de integers) { msort(A,0,length[A]-1);}msort(A,p,r) { If (p == r) return; q = floor((p+r)/2); msort(A,p,q); msort(A,q+1,r); merge(A,p,q,r);}

Page 14: 1 Ordenando. 2 Sorting Input Una secuencia de numeros a 1, a 2, a 3, …, a n Output Una permutación (reorden) a’ 1, a’ 2, a’ 3, …, a’ n de la input, tal.

14

8 3 4 1 6 5 2 7

8 3 4 1 6 5 2 7

1 2 3 4 5 6 7 8

1 3 4 8 2 5 6 7

8 3 4 1

8 3 4 1

3 8 1 4

6 5

6 5 2 7

2 7

5 6 2 7

Mergesort

T(1) = O(1)

T(n) =

O(1)+2T(n/2)+O(n)

T(n) = O(n log n)

T(n/2) O(1)

O(n)

T(n/2)

Page 15: 1 Ordenando. 2 Sorting Input Una secuencia de numeros a 1, a 2, a 3, …, a n Output Una permutación (reorden) a’ 1, a’ 2, a’ 3, …, a’ n de la input, tal.

15

Analisis de Mergesort

nnTnT

T

)2/(2)(

1)1(

nT

n

nTlog

1

)1()(

12/

)2/()(

n

nT

n

nT

11

)1(

2

)2(

...

TT

14/

)4/(

2/

)2/(

n

nT

n

nT

18/

)8/(

4/

)4/(

n

nT

n

nT)log(

log)(

nnO

nnnnT

Page 16: 1 Ordenando. 2 Sorting Input Una secuencia de numeros a 1, a 2, a 3, …, a n Output Una permutación (reorden) a’ 1, a’ 2, a’ 3, …, a’ n de la input, tal.

16

Mergesort

• O(n log n) worst-case running time

• Divide-and-conquer

• requiere memoria adicional

Page 17: 1 Ordenando. 2 Sorting Input Una secuencia de numeros a 1, a 2, a 3, …, a n Output Una permutación (reorden) a’ 1, a’ 2, a’ 3, …, a’ n de la input, tal.

17

Quicksort

• Divide-and-conquer

• O(n log n) average running time

• O(n2) worst-case running time

• Es el más rápido en la practica.

Page 18: 1 Ordenando. 2 Sorting Input Una secuencia de numeros a 1, a 2, a 3, …, a n Output Una permutación (reorden) a’ 1, a’ 2, a’ 3, …, a’ n de la input, tal.

18

30 19 24 28 41 34 15 43 20 12 36

12 15 19 20 24 28 30 34 36 41 43

19 24 28 15 20 12 41 34 43 3630

12 15 19 20 24 28

15 12 19 24 28 20

12 15 20 24 28

34 36 41 43

34 36

12 15 20 24 28 34 36

T(i) O(n)

O(1)

T(n-i)

34 36 41 43

)1()()()()(

1)1()0(

OnOinTiTnT

TT

Page 19: 1 Ordenando. 2 Sorting Input Una secuencia de numeros a 1, a 2, a 3, …, a n Output Una permutación (reorden) a’ 1, a’ 2, a’ 3, …, a’ n de la input, tal.

19

Quicksort Algorithm

• Suponga una entrada de elementos en una lista S.• Si el # de elementos en S es 0 o 1, return S.• Pincha un elemento p (el pivote) en S. • Particion S-{p} en

• S1 = {x S | x p } y

• S2 = {x S | x p }

• Ordena S1 y S2 recursivamente• Return ( S1, p, S2 )

Page 20: 1 Ordenando. 2 Sorting Input Una secuencia de numeros a 1, a 2, a 3, …, a n Output Una permutación (reorden) a’ 1, a’ 2, a’ 3, …, a’ n de la input, tal.

20

Escoger Pivote

• El primer elemento• Mala opción

• Un elemento al azar

• Median

• Median de la izq., der y elementos del centro.

Page 21: 1 Ordenando. 2 Sorting Input Una secuencia de numeros a 1, a 2, a 3, …, a n Output Una permutación (reorden) a’ 1, a’ 2, a’ 3, …, a’ n de la input, tal.

21

Particion

301924 2841 341543 2012

301924 28 41 341543 20 12

301924 2841 341543 2012

301924 2841 3415 43 2012

301924 2841 3415 432012

301924 28 413415 432012

Page 22: 1 Ordenando. 2 Sorting Input Una secuencia de numeros a 1, a 2, a 3, …, a n Output Una permutación (reorden) a’ 1, a’ 2, a’ 3, …, a’ n de la input, tal.

22

Mejor caso- Best Case

nnTnT

TT

)2/(2)(

1)1()0(

)log()( nnOnT

Page 23: 1 Ordenando. 2 Sorting Input Una secuencia de numeros a 1, a 2, a 3, …, a n Output Una permutación (reorden) a’ 1, a’ 2, a’ 3, …, a’ n de la input, tal.

23

Peor caso- Worst Case

1 2 3 4 5 6 7 8 9 10 11

1 2 3 4 5 6 7 8 9 10 11

2 3 4 5 6 7 8 9 10 11

3 4 5 6 7 8 9 10 11

4 5 6 7 8 9 10 11

nnTnT

TT

)1()(

1)1()0(

Page 24: 1 Ordenando. 2 Sorting Input Una secuencia de numeros a 1, a 2, a 3, …, a n Output Una permutación (reorden) a’ 1, a’ 2, a’ 3, …, a’ n de la input, tal.

24

Analisis del Worst-Case

nnTnT

TT

)1()(

1)1()0(

)1()2()1( nnTnT

)2()3()2( nnTnT

)2()1()2(

...

TT

n

iiTnT

2)1()(

)( 2nO

Page 25: 1 Ordenando. 2 Sorting Input Una secuencia de numeros a 1, a 2, a 3, …, a n Output Una permutación (reorden) a’ 1, a’ 2, a’ 3, …, a’ n de la input, tal.

25

Aplicacion de Quicksort:Selecting k-th smallest element

quickselect:1. If |S|=1 then k=1 and return the element in S as the answer.2. Pick a pivot element,vS.

3. Partition S-{v} into S1and S2, as was done with quicksort

4. If k |S1| the kth smallest element must be in S1. In this case return quickselect(S1,k). If k=1+|S1|, then the pivot is the kth smallest element and we can return it as the answer. Otherwise, the kth smallest element is in S2, and it is the (k-|S1|-1)st smallest in S2 . We make a recursive call and return quickselect(S2, k-|S1|-1).

Complexity: O(n) in averageApplication: Finding Median

Page 26: 1 Ordenando. 2 Sorting Input Una secuencia de numeros a 1, a 2, a 3, …, a n Output Una permutación (reorden) a’ 1, a’ 2, a’ 3, …, a’ n de la input, tal.

26

adivinando• Player 1: Pincha un nº x entre 1 y 10.• Player 2: Trata de determinar x haciendo la

pregunta:• Es x y ?

1,2,3,4,5,6,7,8,9,10

1,2,3,4,5

5

6,7,8,9,10

5

8

76,7,8

8

5

41,2,3

41,2 3

21

6,7

76

9,10

1096 6

7 9 9

8

1 1

2 2 4

3

4,5

3

Page 27: 1 Ordenando. 2 Sorting Input Una secuencia de numeros a 1, a 2, a 3, …, a n Output Una permutación (reorden) a’ 1, a’ 2, a’ 3, …, a’ n de la input, tal.

27

1,2,3,4,5,6

1,2,3

1,2 3

21

1 1

2 2

3 3

4,5,6

4,5 6

54

4 4

5 5

1,2,3,4,5,6

1,2,3,4

1,2 6

21

1 1

2 5

4 4

5,6

3,4 5

43

3 3

52

1,2,3,4,5,6

3,4,5,62

12

1 1

2,3,4,5,6

4

3

3 3

2

4,5,6

6

55,6

5

5

4 4

Page 28: 1 Ordenando. 2 Sorting Input Una secuencia de numeros a 1, a 2, a 3, …, a n Output Una permutación (reorden) a’ 1, a’ 2, a’ 3, …, a’ n de la input, tal.

28

a<b<ca<c<bb<a<cb<c<ac<a<bc<b<a

b<aa<b

a<b<ca<c<b

b<a<cb<c<a

c<a<b c<b<a

c<aa<c

a<b<ca<c<b

c<a<b

a<b<c a<c<b

c<bb<c

b<a<cb<c<a

c<b<a

c<bb<c

c<aa<c

b<a<c b<c<a

Decision Trees

Page 29: 1 Ordenando. 2 Sorting Input Una secuencia de numeros a 1, a 2, a 3, …, a n Output Una permutación (reorden) a’ 1, a’ 2, a’ 3, …, a’ n de la input, tal.

29

• Un árbol binario de profundidad d posee a lo más 2d hojas.

• Un árbol binario con L hojas tiene profundidad a lo menos log L

Page 30: 1 Ordenando. 2 Sorting Input Una secuencia de numeros a 1, a 2, a 3, …, a n Output Una permutación (reorden) a’ 1, a’ 2, a’ 3, …, a’ n de la input, tal.

30

Bucket Sort

1

36

8

12

n=5

O(n+b)

3

1

12

123456789

101112

b=12

1

1

11, 3, 3, 6, 8, 12

Page 31: 1 Ordenando. 2 Sorting Input Una secuencia de numeros a 1, a 2, a 3, …, a n Output Una permutación (reorden) a’ 1, a’ 2, a’ 3, …, a’ n de la input, tal.

31

Radix Sort

000001510

343064 124

216027008

000 001 064027008

000

001

510

343

064124

216027008

123456789

0123456789

0 000 001510

343

064

124216027

008123456789

0

510343

124216

000 001 510343064 124 216027008

n =9b =10p =3

O(p(n+b))