Sunteți pe pagina 1din 63

MEZCLA

©® Dr. Alfredo Gutiérrez 1


29 36 54 67 85 2 23 64 66 87

©® Dr. Alfredo Gutiérrez 2


Algoritmo de intercalación

29 36 54 67 85 2 23 64 66 87

2 23 29 36 54 64 66 67 85 87

©® Dr. Alfredo Gutiérrez 3


ei m m+1 ed

29 36 54 67 85 2 23 64 66 87
i j

©® Dr. Alfredo Gutiérrez 4


ei m m+1 ed

29 36 54 67 85 2 23 64 66 87
i j

2
x

©® Dr. Alfredo Gutiérrez 5


ei m m+1 ed

29 36 54 67 85 2 23 64 66 87
i j

2 23
x

©® Dr. Alfredo Gutiérrez 6


ei m m+1 ed

29 36 54 67 85 2 23 64 66 87
i j

2 23 29
x

©® Dr. Alfredo Gutiérrez 7


ei m m+1 ed

29 36 54 67 85 2 23 64 66 87
i j

2 23 29 36
x

©® Dr. Alfredo Gutiérrez 8


ei m m+1 ed

29 36 54 67 85 2 23 64 66 87
i j

2 23 29 36 54
x

©® Dr. Alfredo Gutiérrez 9


ei m m+1 ed

29 36 54 67 85 2 23 64 66 87
i j

2 23 29 36 54 64
x

©® Dr. Alfredo Gutiérrez 10


ei m m+1 ed

29 36 54 67 85 2 23 64 66 87
i j

2 23 29 36 54 64 66
x

©® Dr. Alfredo Gutiérrez 11


ei m m+1 ed

29 36 54 67 85 2 23 64 66 87
i j

2 23 29 36 54 64 66 67
x

©® Dr. Alfredo Gutiérrez 12


ei m m+1 ed

29 36 54 67 85 2 23 64 66 87
i j

2 23 29 36 54 64 66 67 85
x

©® Dr. Alfredo Gutiérrez 13


ei m m+1 ed

29 36 54 67 85 2 23 64 66 87
i j

2 23 29 36 54 64 66 67 85 87
x

©® Dr. Alfredo Gutiérrez 14


ei m m+1 ed

29 36 54 67 85 2 23 64 66 87
i j

2 23 29 36 54 64 66 67 85 87
x

©® Dr. Alfredo Gutiérrez 15


extizq medio extder
i = extizq, j = medio + 1, x = extizq
29 36 54 67 85 2 23 64 66 87
mientras i ≤ medio y j ≤ extder
mientras i ≤ medio y temp[i] ≤ temp[j]
arr[x] = temp[i]
i = i + 1, x = x + 1
fin mientras
¿i ≤ medio?
Sí: mientras j ≤ extder y temp[j] ≤ temp[i]
arr[x] = temp[j]
j = j + 1, x = x + 1
extizq: 0 fin mientras
fin mientras
medio: 4 i:
mientras i ≤ medio
arr[x] = temp[i]
extder: 9 j:
i = i + 1, x = x + 1
fin mientras
x:
mientras j ≤ extder
arr[x] = temp[j]
j = j + 1, x = x + 1
fin mientras

©® Dr. Alfredo Gutiérrez 16


extizq medio extder
i = extizq, j = medio + 1, x = extizq
29 36 54 67 85 2 23 64 66 87
mientras i ≤ medio y j ≤ extder
mientras i ≤ medio y temp[i] ≤ temp[j]
arr[x] = temp[i]
i = i + 1, x = x + 1
fin mientras
¿i ≤ medio?
Sí: mientras j ≤ extder y temp[j] ≤ temp[i]
arr[x] = temp[j]
j = j + 1, x = x + 1
extizq: 0 fin mientras
fin mientras
medio: 4 i: 0
mientras i ≤ medio
arr[x] = temp[i]
extder: 9 j: 5 i = i + 1, x = x + 1
fin mientras
x: 0
mientras j ≤ extder
arr[x] = temp[j]
j = j + 1, x = x + 1
fin mientras

©® Dr. Alfredo Gutiérrez 17


extizq medio extder
i = extizq, j = medio + 1, x = extizq
29 36 54 67 85 2 23 64 66 87
mientras i ≤ medio y j ≤ extder
mientras i ≤ medio y temp[i] ≤ temp[j]
arr[x] = temp[i]
i = i + 1, x = x + 1
fin mientras
¿i ≤ medio?
Sí: mientras j ≤ extder y temp[j] ≤ temp[i]
arr[x] = temp[j]
j = j + 1, x = x + 1
extizq: 0 fin mientras
fin mientras
medio: 4 i: 0
mientras i ≤ medio
arr[x] = temp[i]
extder: 9 j: 5 i = i + 1, x = x + 1
fin mientras
x: 0
mientras j ≤ extder
arr[x] = temp[j]
j = j + 1, x = x + 1
fin mientras

©® Dr. Alfredo Gutiérrez 18


extizq medio extder
i = extizq, j = medio + 1, x = extizq
29 36 54 67 85 2 23 64 66 87
mientras i ≤ medio y j ≤ extder
mientras i ≤ medio y temp[i] ≤ temp[j]
arr[x] = temp[i]
i = i + 1, x = x + 1
fin mientras
¿i ≤ medio?
Sí: mientras j ≤ extder y temp[j] ≤ temp[i]
arr[x] = temp[j]
j = j + 1, x = x + 1
extizq: 0 fin mientras
fin mientras
medio: 4 i: 0
mientras i ≤ medio
arr[x] = temp[i]
extder: 9 j: 5 i = i + 1, x = x + 1
fin mientras
x: 0
mientras j ≤ extder
arr[x] = temp[j]
j = j + 1, x = x + 1
fin mientras

©® Dr. Alfredo Gutiérrez 19


extizq medio extder
i = extizq, j = medio + 1, x = extizq
29 36 54 67 85 2 23 64 66 87
mientras i ≤ medio y j ≤ extder
mientras i ≤ medio y temp[i] ≤ temp[j]
arr[x] = temp[i]
i = i + 1, x = x + 1
fin mientras
¿i ≤ medio?
Sí: mientras j ≤ extder y temp[j] ≤ temp[i]
arr[x] = temp[j]
j = j + 1, x = x + 1
extizq: 0 fin mientras
fin mientras
medio: 4 i: 0
mientras i ≤ medio
arr[x] = temp[i]
extder: 9 j: 5 i = i + 1, x = x + 1
fin mientras
x: 0
mientras j ≤ extder
arr[x] = temp[j]
j = j + 1, x = x + 1
fin mientras

©® Dr. Alfredo Gutiérrez 20


extizq medio extder
i = extizq, j = medio + 1, x = extizq
29 36 54 67 85 2 23 64 66 87
mientras i ≤ medio y j ≤ extder
mientras i ≤ medio y temp[i] ≤ temp[j]
arr[x] = temp[i]
i = i + 1, x = x + 1
fin mientras
¿i ≤ medio?
Sí: mientras j ≤ extder y temp[j] ≤ temp[i]
arr[x] = temp[j]
j = j + 1, x = x + 1
extizq: 0 fin mientras
fin mientras
medio: 4 i: 0
mientras i ≤ medio
arr[x] = temp[i]
extder: 9 j: 5 i = i + 1, x = x + 1
fin mientras
x: 0
mientras j ≤ extder
arr[x] = temp[j]
j = j + 1, x = x + 1
fin mientras

©® Dr. Alfredo Gutiérrez 21


extizq medio extder
i = extizq, j = medio + 1, x = extizq
29 36 54 67 85 2 23 64 66 87
mientras i ≤ medio y j ≤ extder
mientras i ≤ medio y temp[i] ≤ temp[j]
arr[x] = temp[i]
i = i + 1, x = x + 1
fin mientras
2 ¿i ≤ medio?
Sí: mientras j ≤ extder y temp[j] ≤ temp[i]
arr[x] = temp[j]
j = j + 1, x = x + 1
extizq: 0 fin mientras
fin mientras
medio: 4 i: 0
mientras i ≤ medio
arr[x] = temp[i]
extder: 9 j: 5 i = i + 1, x = x + 1
fin mientras
x: 0
mientras j ≤ extder
arr[x] = temp[j]
j = j + 1, x = x + 1
fin mientras

©® Dr. Alfredo Gutiérrez 22


extizq medio extder
i = extizq, j = medio + 1, x = extizq
29 36 54 67 85 2 23 64 66 87
mientras i ≤ medio y j ≤ extder
mientras i ≤ medio y temp[i] ≤ temp[j]
arr[x] = temp[i]
i = i + 1, x = x + 1
fin mientras
2 ¿i ≤ medio?
Sí: mientras j ≤ extder y temp[j] ≤ temp[i]
arr[x] = temp[j]
j = j + 1, x = x + 1
extizq: 0 fin mientras
fin mientras
medio: 4 i: 0
mientras i ≤ medio
arr[x] = temp[i]
extder: 9 j: 6 i = i + 1, x = x + 1
fin mientras
x: 1
mientras j ≤ extder
arr[x] = temp[j]
j = j + 1, x = x + 1
fin mientras

©® Dr. Alfredo Gutiérrez 23


extizq medio extder
i = extizq, j = medio + 1, x = extizq
29 36 54 67 85 2 23 64 66 87
mientras i ≤ medio y j ≤ extder
mientras i ≤ medio y temp[i] ≤ temp[j]
arr[x] = temp[i]
i = i + 1, x = x + 1
fin mientras
2 ¿i ≤ medio?
Sí: mientras j ≤ extder y temp[j] ≤ temp[i]
arr[x] = temp[j]
j = j + 1, x = x + 1
extizq: 0 fin mientras
fin mientras
medio: 4 i: 0
mientras i ≤ medio
arr[x] = temp[i]
extder: 9 j: 6 i = i + 1, x = x + 1
fin mientras
x: 1
mientras j ≤ extder
arr[x] = temp[j]
j = j + 1, x = x + 1
fin mientras

©® Dr. Alfredo Gutiérrez 24


extizq medio extder
i = extizq, j = medio + 1, x = extizq
29 36 54 67 85 2 23 64 66 87
mientras i ≤ medio y j ≤ extder
mientras i ≤ medio y temp[i] ≤ temp[j]
arr[x] = temp[i]
i = i + 1, x = x + 1
fin mientras
2 23 ¿i ≤ medio?
Sí: mientras j ≤ extder y temp[j] ≤ temp[i]
arr[x] = temp[j]
j = j + 1, x = x + 1
extizq: 0 fin mientras
fin mientras
medio: 4 i: 0
mientras i ≤ medio
arr[x] = temp[i]
extder: 9 j: 6 i = i + 1, x = x + 1
fin mientras
x: 1
mientras j ≤ extder
arr[x] = temp[j]
j = j + 1, x = x + 1
fin mientras

©® Dr. Alfredo Gutiérrez 25


extizq medio extder
i = extizq, j = medio + 1, x = extizq
29 36 54 67 85 2 23 64 66 87
mientras i ≤ medio y j ≤ extder
mientras i ≤ medio y temp[i] ≤ temp[j]
arr[x] = temp[i]
i = i + 1, x = x + 1
fin mientras
2 23 ¿i ≤ medio?
Sí: mientras j ≤ extder y temp[j] ≤ temp[i]
arr[x] = temp[j]
j = j + 1, x = x + 1
extizq: 0 fin mientras
fin mientras
medio: 4 i: 0
mientras i ≤ medio
arr[x] = temp[i]
extder: 9 j: 7 i = i + 1, x = x + 1
fin mientras
x: 2
mientras j ≤ extder
arr[x] = temp[j]
j = j + 1, x = x + 1
fin mientras

©® Dr. Alfredo Gutiérrez 26


extizq medio extder
i = extizq, j = medio + 1, x = extizq
29 36 54 67 85 2 23 64 66 87
mientras i ≤ medio y j ≤ extder
mientras i ≤ medio y temp[i] ≤ temp[j]
arr[x] = temp[i]
i = i + 1, x = x + 1
fin mientras
2 23 ¿i ≤ medio?
Sí: mientras j ≤ extder y temp[j] ≤ temp[i]
arr[x] = temp[j]
j = j + 1, x = x + 1
extizq: 0 fin mientras
fin mientras
medio: 4 i: 0
mientras i ≤ medio
arr[x] = temp[i]
extder: 9 j: 7 i = i + 1, x = x + 1
fin mientras
x: 2
mientras j ≤ extder
arr[x] = temp[j]
j = j + 1, x = x + 1
fin mientras

©® Dr. Alfredo Gutiérrez 27


extizq medio extder
i = extizq, j = medio + 1, x = extizq
29 36 54 67 85 2 23 64 66 87
mientras i ≤ medio y j ≤ extder
mientras i ≤ medio y temp[i] ≤ temp[j]
arr[x] = temp[i]
i = i + 1, x = x + 1
fin mientras
2 23 ¿i ≤ medio?
Sí: mientras j ≤ extder y temp[j] ≤ temp[i]
arr[x] = temp[j]
j = j + 1, x = x + 1
extizq: 0 fin mientras
fin mientras
medio: 4 i: 0
mientras i ≤ medio
arr[x] = temp[i]
extder: 9 j: 7 i = i + 1, x = x + 1
fin mientras
x: 2
mientras j ≤ extder
arr[x] = temp[j]
j = j + 1, x = x + 1
fin mientras

©® Dr. Alfredo Gutiérrez 28


extizq medio extder
i = extizq, j = medio + 1, x = extizq
29 36 54 67 85 2 23 64 66 87
mientras i ≤ medio y j ≤ extder
mientras i ≤ medio y temp[i] ≤ temp[j]
arr[x] = temp[i]
i = i + 1, x = x + 1
fin mientras
2 23 ¿i ≤ medio?
Sí: mientras j ≤ extder y temp[j] ≤ temp[i]
arr[x] = temp[j]
j = j + 1, x = x + 1
extizq: 0 fin mientras
fin mientras
medio: 4 i: 0
mientras i ≤ medio
arr[x] = temp[i]
extder: 9 j: 7 i = i + 1, x = x + 1
fin mientras
x: 2
mientras j ≤ extder
arr[x] = temp[j]
j = j + 1, x = x + 1
fin mientras

©® Dr. Alfredo Gutiérrez 29


extizq medio extder
i = extizq, j = medio + 1, x = extizq
29 36 54 67 85 2 23 64 66 87
mientras i ≤ medio y j ≤ extder
mientras i ≤ medio y temp[i] ≤ temp[j]
arr[x] = temp[i]
i = i + 1, x = x + 1
fin mientras
2 23 29 ¿i ≤ medio?
Sí: mientras j ≤ extder y temp[j] ≤ temp[i]
arr[x] = temp[j]
j = j + 1, x = x + 1
extizq: 0 fin mientras
fin mientras
medio: 4 i: 0
mientras i ≤ medio
arr[x] = temp[i]
extder: 9 j: 7 i = i + 1, x = x + 1
fin mientras
x: 2
mientras j ≤ extder
arr[x] = temp[j]
j = j + 1, x = x + 1
fin mientras

©® Dr. Alfredo Gutiérrez 30


extizq medio extder
i = extizq, j = medio + 1, x = extizq
29 36 54 67 85 2 23 64 66 87
mientras i ≤ medio y j ≤ extder
mientras i ≤ medio y temp[i] ≤ temp[j]
arr[x] = temp[i]
i = i + 1, x = x + 1
fin mientras
2 23 29 ¿i ≤ medio?
Sí: mientras j ≤ extder y temp[j] ≤ temp[i]
arr[x] = temp[j]
j = j + 1, x = x + 1
extizq: 0 fin mientras
fin mientras
medio: 4 i: 1
mientras i ≤ medio
arr[x] = temp[i]
extder: 9 j: 7 i = i + 1, x = x + 1
fin mientras
x: 3
mientras j ≤ extder
arr[x] = temp[j]
j = j + 1, x = x + 1
fin mientras

©® Dr. Alfredo Gutiérrez 31


extizq medio extder
i = extizq, j = medio + 1, x = extizq
29 36 54 67 85 2 23 64 66 87
mientras i ≤ medio y j ≤ extder
mientras i ≤ medio y temp[i] ≤ temp[j]
arr[x] = temp[i]
i = i + 1, x = x + 1
fin mientras
2 23 ¿i ≤ medio?
Sí: mientras j ≤ extder y temp[j] ≤ temp[i]
arr[x] = temp[j]
j = j + 1, x = x + 1
extizq: 0 fin mientras
fin mientras
medio: 4 i: 1
mientras i ≤ medio
arr[x] = temp[i]
extder: 9 j: 7 i = i + 1, x = x + 1
fin mientras
x: 3
mientras j ≤ extder
arr[x] = temp[j]
j = j + 1, x = x + 1
fin mientras

©® Dr. Alfredo Gutiérrez 32


extizq medio extder
i = extizq, j = medio + 1, x = extizq
29 36 54 67 85 2 23 64 66 87
mientras i ≤ medio y j ≤ extder
mientras i ≤ medio y temp[i] ≤ temp[j]
arr[x] = temp[i]
i = i + 1, x = x + 1
fin mientras
2 23 29 36 ¿i ≤ medio?
Sí: mientras j ≤ extder y temp[j] ≤ temp[i]
arr[x] = temp[j]
j = j + 1, x = x + 1
extizq: 0 fin mientras
fin mientras
medio: 4 i: 1
mientras i ≤ medio
arr[x] = temp[i]
extder: 9 j: 7 i = i + 1, x = x + 1
fin mientras
x: 3
mientras j ≤ extder
arr[x] = temp[j]
j = j + 1, x = x + 1
fin mientras

©® Dr. Alfredo Gutiérrez 33


extizq medio extder
i = extizq, j = medio + 1, x = extizq
29 36 54 67 85 2 23 64 66 87
mientras i ≤ medio y j ≤ extder
mientras i ≤ medio y temp[i] ≤ temp[j]
arr[x] = temp[i]
i = i + 1, x = x + 1
fin mientras
2 23 29 36 ¿i ≤ medio?
Sí: mientras j ≤ extder y temp[j] ≤ temp[i]
arr[x] = temp[j]
j = j + 1, x = x + 1
extizq: 0 fin mientras
fin mientras
medio: 4 i: 2
mientras i ≤ medio
arr[x] = temp[i]
extder: 9 j: 7 i = i + 1, x = x + 1
fin mientras
x: 4
mientras j ≤ extder
arr[x] = temp[j]
j = j + 1, x = x + 1
fin mientras

©® Dr. Alfredo Gutiérrez 34


extizq medio extder
i = extizq, j = medio + 1, x = extizq
29 36 54 67 85 2 23 64 66 87
mientras i ≤ medio y j ≤ extder
mientras i ≤ medio y temp[i] ≤ temp[j]
arr[x] = temp[i]
i = i + 1, x = x + 1
fin mientras
2 23 29 36 ¿i ≤ medio?
Sí: mientras j ≤ extder y temp[j] ≤ temp[i]
arr[x] = temp[j]
j = j + 1, x = x + 1
extizq: 0 fin mientras
fin mientras
medio: 4 i: 2
mientras i ≤ medio
arr[x] = temp[i]
extder: 9 j: 7 i = i + 1, x = x + 1
fin mientras
x: 4
mientras j ≤ extder
arr[x] = temp[j]
j = j + 1, x = x + 1
fin mientras

©® Dr. Alfredo Gutiérrez 35


extizq medio extder
i = extizq, j = medio + 1, x = extizq
29 36 54 67 85 2 23 64 66 87
mientras i ≤ medio y j ≤ extder
mientras i ≤ medio y temp[i] ≤ temp[j]
arr[x] = temp[i]
i = i + 1, x = x + 1
fin mientras
2 23 29 36 54 ¿i ≤ medio?
Sí: mientras j ≤ extder y temp[j] ≤ temp[i]
arr[x] = temp[j]
j = j + 1, x = x + 1
extizq: 0 fin mientras
fin mientras
medio: 4 i: 2
mientras i ≤ medio
arr[x] = temp[i]
extder: 9 j: 7 i = i + 1, x = x + 1
fin mientras
x: 4
mientras j ≤ extder
arr[x] = temp[j]
j = j + 1, x = x + 1
fin mientras

©® Dr. Alfredo Gutiérrez 36


extizq medio extder
i = extizq, j = medio + 1, x = extizq
29 36 54 67 85 2 23 64 66 87
mientras i ≤ medio y j ≤ extder
mientras i ≤ medio y temp[i] ≤ temp[j]
arr[x] = temp[i]
i = i + 1, x = x + 1
fin mientras
2 23 29 36 54 ¿i ≤ medio?
Sí: mientras j ≤ extder y temp[j] ≤ temp[i]
arr[x] = temp[j]
j = j + 1, x = x + 1
extizq: 0 fin mientras
fin mientras
medio: 4 i: 3
mientras i ≤ medio
arr[x] = temp[i]
extder: 9 j: 7 i = i + 1, x = x + 1
fin mientras
x: 5
mientras j ≤ extder
arr[x] = temp[j]
j = j + 1, x = x + 1
fin mientras

©® Dr. Alfredo Gutiérrez 37


extizq medio extder
i = extizq, j = medio + 1, x = extizq
29 36 54 67 85 2 23 64 66 87
mientras i ≤ medio y j ≤ extder
mientras i ≤ medio y temp[i] ≤ temp[j]
arr[x] = temp[i]
i = i + 1, x = x + 1
fin mientras
2 23 29 36 54 ¿i ≤ medio?
Sí: mientras j ≤ extder y temp[j] ≤ temp[i]
arr[x] = temp[j]
j = j + 1, x = x + 1
extizq: 0 fin mientras
fin mientras
medio: 4 i: 3
mientras i ≤ medio
arr[x] = temp[i]
extder: 9 j: 7 i = i + 1, x = x + 1
fin mientras
x: 5
mientras j ≤ extder
arr[x] = temp[j]
j = j + 1, x = x + 1
fin mientras

©® Dr. Alfredo Gutiérrez 38


extizq medio extder
i = extizq, j = medio + 1, x = extizq
29 36 54 67 85 2 23 64 66 87
mientras i ≤ medio y j ≤ extder
mientras i ≤ medio y temp[i] ≤ temp[j]
arr[x] = temp[i]
i = i + 1, x = x + 1
fin mientras
2 23 29 36 54 ¿i ≤ medio?
Sí: mientras j ≤ extder y temp[j] ≤ temp[i]
arr[x] = temp[j]
j = j + 1, x = x + 1
extizq: 0 fin mientras
fin mientras
medio: 4 i: 3
mientras i ≤ medio
arr[x] = temp[i]
extder: 9 j: 7 i = i + 1, x = x + 1
fin mientras
x: 5
mientras j ≤ extder
arr[x] = temp[j]
j = j + 1, x = x + 1
fin mientras

©® Dr. Alfredo Gutiérrez 39


extizq medio extder
i = extizq, j = medio + 1, x = extizq
29 36 54 67 85 2 23 64 66 87
mientras i ≤ medio y j ≤ extder
mientras i ≤ medio y temp[i] ≤ temp[j]
arr[x] = temp[i]
i = i + 1, x = x + 1
fin mientras
2 23 29 36 54 ¿i ≤ medio?
Sí: mientras j ≤ extder y temp[j] ≤ temp[i]
arr[x] = temp[j]
j = j + 1, x = x + 1
extizq: 0 fin mientras
fin mientras
medio: 4 i: 3
mientras i ≤ medio
arr[x] = temp[i]
extder: 9 j: 7 i = i + 1, x = x + 1
fin mientras
x: 5
mientras j ≤ extder
arr[x] = temp[j]
j = j + 1, x = x + 1
fin mientras

©® Dr. Alfredo Gutiérrez 40


extizq medio extder
i = extizq, j = medio + 1, x = extizq
29 36 54 67 85 2 23 64 66 87
mientras i ≤ medio y j ≤ extder
mientras i ≤ medio y temp[i] ≤ temp[j]
arr[x] = temp[i]
i = i + 1, x = x + 1
fin mientras
2 23 29 36 54 64 ¿i ≤ medio?
Sí: mientras j ≤ extder y temp[j] ≤ temp[i]
arr[x] = temp[j]
j = j + 1, x = x + 1
extizq: 0 fin mientras
fin mientras
medio: 4 i: 3
mientras i ≤ medio
arr[x] = temp[i]
extder: 9 j: 7 i = i + 1, x = x + 1
fin mientras
x: 5
mientras j ≤ extder
arr[x] = temp[j]
j = j + 1, x = x + 1
fin mientras

©® Dr. Alfredo Gutiérrez 41


extizq medio extder
i = extizq, j = medio + 1, x = extizq
29 36 54 67 85 2 23 64 66 87
mientras i ≤ medio y j ≤ extder
mientras i ≤ medio y temp[i] ≤ temp[j]
arr[x] = temp[i]
i = i + 1, x = x + 1
fin mientras
2 23 29 36 54 64 ¿i ≤ medio?
Sí: mientras j ≤ extder y temp[j] ≤ temp[i]
arr[x] = temp[j]
j = j + 1, x = x + 1
extizq: 0 fin mientras
fin mientras
medio: 4 i: 3
mientras i ≤ medio
arr[x] = temp[i]
extder: 9 j: 8 i = i + 1, x = x + 1
fin mientras
x: 6
mientras j ≤ extder
arr[x] = temp[j]
j = j + 1, x = x + 1
fin mientras

©® Dr. Alfredo Gutiérrez 42


extizq medio extder
i = extizq, j = medio + 1, x = extizq
29 36 54 67 85 2 23 64 66 87
mientras i ≤ medio y j ≤ extder
mientras i ≤ medio y temp[i] ≤ temp[j]
arr[x] = temp[i]
i = i + 1, x = x + 1
fin mientras
2 23 29 36 54 64 ¿i ≤ medio?
Sí: mientras j ≤ extder y temp[j] ≤ temp[i]
arr[x] = temp[j]
j = j + 1, x = x + 1
extizq: 0 fin mientras
fin mientras
medio: 4 i: 3
mientras i ≤ medio
arr[x] = temp[i]
extder: 9 j: 8 i = i + 1, x = x + 1
fin mientras
x: 6
mientras j ≤ extder
arr[x] = temp[j]
j = j + 1, x = x + 1
fin mientras

©® Dr. Alfredo Gutiérrez 43


extizq medio extder
i = extizq, j = medio + 1, x = extizq
29 36 54 67 85 2 23 64 66 87
mientras i ≤ medio y j ≤ extder
mientras i ≤ medio y temp[i] ≤ temp[j]
arr[x] = temp[i]
i = i + 1, x = x + 1
fin mientras
2 23 29 36 54 64 66 ¿i ≤ medio?
Sí: mientras j ≤ extder y temp[j] ≤ temp[i]
arr[x] = temp[j]
j = j + 1, x = x + 1
extizq: 0 fin mientras
fin mientras
medio: 4 i: 3
mientras i ≤ medio
arr[x] = temp[i]
extder: 9 j: 8 i = i + 1, x = x + 1
fin mientras
x: 6
mientras j ≤ extder
arr[x] = temp[j]
j = j + 1, x = x + 1
fin mientras

©® Dr. Alfredo Gutiérrez 44


extizq medio extder
i = extizq, j = medio + 1, x = extizq
29 36 54 67 85 2 23 64 66 87
mientras i ≤ medio y j ≤ extder
mientras i ≤ medio y temp[i] ≤ temp[j]
arr[x] = temp[i]
i = i + 1, x = x + 1
fin mientras
2 23 29 36 54 64 66 ¿i ≤ medio?
Sí: mientras j ≤ extder y temp[j] ≤ temp[i]
arr[x] = temp[j]
j = j + 1, x = x + 1
extizq: 0 fin mientras
fin mientras
medio: 4 i: 3
mientras i ≤ medio
arr[x] = temp[i]
extder: 9 j: 9 i = i + 1, x = x + 1
fin mientras
x: 7
mientras j ≤ extder
arr[x] = temp[j]
j = j + 1, x = x + 1
fin mientras

©® Dr. Alfredo Gutiérrez 45


extizq medio extder
i = extizq, j = medio + 1, x = extizq
29 36 54 67 85 2 23 64 66 87
mientras i ≤ medio y j ≤ extder
mientras i ≤ medio y temp[i] ≤ temp[j]
arr[x] = temp[i]
i = i + 1, x = x + 1
fin mientras
2 23 29 36 54 64 66 ¿i ≤ medio?
Sí: mientras j ≤ extder y temp[j] ≤ temp[i]
arr[x] = temp[j]
j = j + 1, x = x + 1
extizq: 0 fin mientras
fin mientras
medio: 4 i: 3
mientras i ≤ medio
arr[x] = temp[i]
extder: 9 j: 9 i = i + 1, x = x + 1
fin mientras
x: 7
mientras j ≤ extder
arr[x] = temp[j]
j = j + 1, x = x + 1
fin mientras

©® Dr. Alfredo Gutiérrez 46


extizq medio extder
i = extizq, j = medio + 1, x = extizq
29 36 54 67 85 2 23 64 66 87
mientras i ≤ medio y j ≤ extder
mientras i ≤ medio y temp[i] ≤ temp[j]
arr[x] = temp[i]
i = i + 1, x = x + 1
fin mientras
2 23 29 36 54 64 66 ¿i ≤ medio?
Sí: mientras j ≤ extder y temp[j] ≤ temp[i]
arr[x] = temp[j]
j = j + 1, x = x + 1
extizq: 0 fin mientras
fin mientras
medio: 4 i: 3
mientras i ≤ medio
arr[x] = temp[i]
extder: 9 j: 9 i = i + 1, x = x + 1
fin mientras
x: 7
mientras j ≤ extder
arr[x] = temp[j]
j = j + 1, x = x + 1
fin mientras

©® Dr. Alfredo Gutiérrez 47


extizq medio extder
i = extizq, j = medio + 1, x = extizq
29 36 54 67 85 2 23 64 66 87
mientras i ≤ medio y j ≤ extder
mientras i ≤ medio y temp[i] ≤ temp[j]
arr[x] = temp[i]
i = i + 1, x = x + 1
fin mientras
2 23 29 36 54 64 66 ¿i ≤ medio?
Sí: mientras j ≤ extder y temp[j] ≤ temp[i]
arr[x] = temp[j]
j = j + 1, x = x + 1
extizq: 0 fin mientras
fin mientras
medio: 4 i: 3
mientras i ≤ medio
arr[x] = temp[i]
extder: 9 j: 9 i = i + 1, x = x + 1
fin mientras
x: 7
mientras j ≤ extder
arr[x] = temp[j]
j = j + 1, x = x + 1
fin mientras

©® Dr. Alfredo Gutiérrez 48


extizq medio extder
i = extizq, j = medio + 1, x = extizq
29 36 54 67 85 2 23 64 66 87
mientras i ≤ medio y j ≤ extder
mientras i ≤ medio y temp[i] ≤ temp[j]
arr[x] = temp[i]
i = i + 1, x = x + 1
fin mientras
2 23 29 36 54 64 66 67 ¿i ≤ medio?
Sí: mientras j ≤ extder y temp[j] ≤ temp[i]
arr[x] = temp[j]
j = j + 1, x = x + 1
extizq: 0 fin mientras
fin mientras
medio: 4 i: 3
mientras i ≤ medio
arr[x] = temp[i]
extder: 9 j: 9 i = i + 1, x = x + 1
fin mientras
x: 7
mientras j ≤ extder
arr[x] = temp[j]
j = j + 1, x = x + 1
fin mientras

©® Dr. Alfredo Gutiérrez 49


extizq medio extder
i = extizq, j = medio + 1, x = extizq
29 36 54 67 85 2 23 64 66 87
mientras i ≤ medio y j ≤ extder
mientras i ≤ medio y temp[i] ≤ temp[j]
arr[x] = temp[i]
i = i + 1, x = x + 1
fin mientras
2 23 29 36 54 64 66 67 ¿i ≤ medio?
Sí: mientras j ≤ extder y temp[j] ≤ temp[i]
arr[x] = temp[j]
j = j + 1, x = x + 1
extizq: 0 fin mientras
fin mientras
medio: 4 i: 4
mientras i ≤ medio
arr[x] = temp[i]
extder: 9 j: 9 i = i + 1, x = x + 1
fin mientras
x: 8
mientras j ≤ extder
arr[x] = temp[j]
j = j + 1, x = x + 1
fin mientras

©® Dr. Alfredo Gutiérrez 50


extizq medio extder
i = extizq, j = medio + 1, x = extizq
29 36 54 67 85 2 23 64 66 87
mientras i ≤ medio y j ≤ extder
mientras i ≤ medio y temp[i] ≤ temp[j]
arr[x] = temp[i]
i = i + 1, x = x + 1
fin mientras
2 23 29 36 54 64 66 67 ¿i ≤ medio?
Sí: mientras j ≤ extder y temp[j] ≤ temp[i]
arr[x] = temp[j]
j = j + 1, x = x + 1
extizq: 0 fin mientras
fin mientras
medio: 4 i: 4
mientras i ≤ medio
arr[x] = temp[i]
extder: 9 j: 9 i = i + 1, x = x + 1
fin mientras
x: 8
mientras j ≤ extder
arr[x] = temp[j]
j = j + 1, x = x + 1
fin mientras

©® Dr. Alfredo Gutiérrez 51


extizq medio extder
i = extizq, j = medio + 1, x = extizq
29 36 54 67 85 2 23 64 66 87
mientras i ≤ medio y j ≤ extder
mientras i ≤ medio y temp[i] ≤ temp[j]
arr[x] = temp[i]
i = i + 1, x = x + 1
fin mientras
2 23 29 36 54 64 66 67 85 ¿i ≤ medio?
Sí: mientras j ≤ extder y temp[j] ≤ temp[i]
arr[x] = temp[j]
j = j + 1, x = x + 1
extizq: 0 fin mientras
fin mientras
medio: 4 i: 4
mientras i ≤ medio
arr[x] = temp[i]
extder: 9 j: 9 i = i + 1, x = x + 1
fin mientras
x: 8
mientras j ≤ extder
arr[x] = temp[j]
j = j + 1, x = x + 1
fin mientras

©® Dr. Alfredo Gutiérrez 52


extizq medio extder
i = extizq, j = medio + 1, x = extizq
29 36 54 67 85 2 23 64 66 87
mientras i ≤ medio y j ≤ extder
mientras i ≤ medio y temp[i] ≤ temp[j]
arr[x] = temp[i]
i = i + 1, x = x + 1
fin mientras
2 23 29 36 54 64 66 67 85 ¿i ≤ medio?
Sí: mientras j ≤ extder y temp[j] ≤ temp[i]
arr[x] = temp[j]
j = j + 1, x = x + 1
extizq: 0 fin mientras
fin mientras
medio: 4 i: 5
mientras i ≤ medio
arr[x] = temp[i]
extder: 9 j: 9 i = i + 1, x = x + 1
fin mientras
x: 9
mientras j ≤ extder
arr[x] = temp[j]
j = j + 1, x = x + 1
fin mientras

©® Dr. Alfredo Gutiérrez 53


extizq medio extder
i = extizq, j = medio + 1, x = extizq
29 36 54 67 85 2 23 64 66 87
mientras i ≤ medio y j ≤ extder
mientras i ≤ medio y temp[i] ≤ temp[j]
arr[x] = temp[i]
i = i + 1, x = x + 1
fin mientras
2 23 29 36 54 64 66 67 85 ¿i ≤ medio?
Sí: mientras j ≤ extder y temp[j] ≤ temp[i]
arr[x] = temp[j]
j = j + 1, x = x + 1
extizq: 0 fin mientras
fin mientras
medio: 4 i: 5
mientras i ≤ medio
arr[x] = temp[i]
extder: 9 j: 9 i = i + 1, x = x + 1
fin mientras
x: 9
mientras j ≤ extder
arr[x] = temp[j]
j = j + 1, x = x + 1
fin mientras

©® Dr. Alfredo Gutiérrez 54


extizq medio extder
i = extizq, j = medio + 1, x = extizq
29 36 54 67 85 2 23 64 66 87
mientras i ≤ medio y j ≤ extder
mientras i ≤ medio y temp[i] ≤ temp[j]
arr[x] = temp[i]
i = i + 1, x = x + 1
fin mientras
2 23 29 36 54 64 66 67 85 ¿i ≤ medio?
Sí: mientras j ≤ extder y temp[j] ≤ temp[i]
arr[x] = temp[j]
j = j + 1, x = x + 1
extizq: 0 fin mientras
fin mientras
medio: 4 i: 5
mientras i ≤ medio
arr[x] = temp[i]
extder: 9 j: 9 i = i + 1, x = x + 1
fin mientras
x: 9
mientras j ≤ extder
arr[x] = temp[j]
j = j + 1, x = x + 1
fin mientras

©® Dr. Alfredo Gutiérrez 55


extizq medio extder
i = extizq, j = medio + 1, x = extizq
29 36 54 67 85 2 23 64 66 87
mientras i ≤ medio y j ≤ extder
mientras i ≤ medio y temp[i] ≤ temp[j]
arr[x] = temp[i]
i = i + 1, x = x + 1
fin mientras
2 23 29 36 54 64 66 67 85 ¿i ≤ medio?
Sí: mientras j ≤ extder y temp[j] ≤ temp[i]
arr[x] = temp[j]
j = j + 1, x = x + 1
extizq: 0 fin mientras
fin mientras
medio: 4 i: 5
mientras i ≤ medio
arr[x] = temp[i]
extder: 9 j: 9 i = i + 1, x = x + 1
fin mientras
x: 9
mientras j ≤ extder
arr[x] = temp[j]
j = j + 1, x = x + 1
fin mientras

©® Dr. Alfredo Gutiérrez 56


extizq medio extder
i = extizq, j = medio + 1, x = extizq
29 36 54 67 85 2 23 64 66 87
mientras i ≤ medio y j ≤ extder
mientras i ≤ medio y temp[i] ≤ temp[j]
arr[x] = temp[i]
i = i + 1, x = x + 1
fin mientras
2 23 29 36 54 64 66 67 85 ¿i ≤ medio?
Sí: mientras j ≤ extder y temp[j] ≤ temp[i]
arr[x] = temp[j]
j = j + 1, x = x + 1
extizq: 0 fin mientras
fin mientras
medio: 4 i: 5
mientras i ≤ medio
arr[x] = temp[i]
extder: 9 j: 9 i = i + 1, x = x + 1
fin mientras
x: 9
mientras j ≤ extder
arr[x] = temp[j]
j = j + 1, x = x + 1
fin mientras

©® Dr. Alfredo Gutiérrez 57


extizq medio extder
i = extizq, j = medio + 1, x = extizq
29 36 54 67 85 2 23 64 66 87
mientras i ≤ medio y j ≤ extder
mientras i ≤ medio y temp[i] ≤ temp[j]
arr[x] = temp[i]
i = i + 1, x = x + 1
fin mientras
2 23 29 36 54 64 66 67 85 ¿i ≤ medio?
Sí: mientras j ≤ extder y temp[j] ≤ temp[i]
arr[x] = temp[j]
j = j + 1, x = x + 1
extizq: 0 fin mientras
fin mientras
medio: 4 i: 5
mientras i ≤ medio
arr[x] = temp[i]
extder: 9 j: 9 i = i + 1, x = x + 1
fin mientras
x: 9
mientras j ≤ extder
arr[x] = temp[j]
j = j + 1, x = x + 1
fin mientras

©® Dr. Alfredo Gutiérrez 58


extizq medio extder
i = extizq, j = medio + 1, x = extizq
29 36 54 67 85 2 23 64 66 87
mientras i ≤ medio y j ≤ extder
mientras i ≤ medio y temp[i] ≤ temp[j]
arr[x] = temp[i]
i = i + 1, x = x + 1
fin mientras
2 23 29 36 54 64 66 67 85 87 ¿i ≤ medio?
Sí: mientras j ≤ extder y temp[j] ≤ temp[i]
arr[x] = temp[j]
j = j + 1, x = x + 1
extizq: 0 fin mientras
fin mientras
medio: 4 i: 5
mientras i ≤ medio
arr[x] = temp[i]
extder: 9 j: 9 i = i + 1, x = x + 1
fin mientras
x: 9
mientras j ≤ extder
arr[x] = temp[j]
j = j + 1, x = x + 1
fin mientras

©® Dr. Alfredo Gutiérrez 59


extizq medio extder
i = extizq, j = medio + 1, x = extizq
29 36 54 67 85 2 23 64 66 87
mientras i ≤ medio y j ≤ extder
mientras i ≤ medio y temp[i] ≤ temp[j]
arr[x] = temp[i]
i = i + 1, x = x + 1
fin mientras
2 23 29 36 54 64 66 67 85 87 ¿i ≤ medio?
Sí: mientras j ≤ extder y temp[j] ≤ temp[i]
arr[x] = temp[j]
j = j + 1, x = x + 1
extizq: 0 fin mientras
fin mientras
medio: 4 i: 5
mientras i ≤ medio
arr[x] = temp[i]
extder: 9 j: 10 i = i + 1, x = x + 1
fin mientras
x: 10
mientras j ≤ extder
arr[x] = temp[j]
j = j + 1, x = x + 1
fin mientras

©® Dr. Alfredo Gutiérrez 60


extizq medio extder
i = extizq, j = medio + 1, x = extizq
29 36 54 67 85 2 23 64 66 87
mientras i ≤ medio y j ≤ extder
mientras i ≤ medio y temp[i] ≤ temp[j]
arr[x] = temp[i]
i = i + 1, x = x + 1
fin mientras
2 23 29 36 54 64 66 67 85 87 ¿i ≤ medio?
Sí: mientras j ≤ extder y temp[j] ≤ temp[i]
arr[x] = temp[j]
j = j + 1, x = x + 1
extizq: 0 fin mientras
fin mientras
medio: 4 i: 5
mientras i ≤ medio
arr[x] = temp[i]
extder: 9 j: 10 i = i + 1, x = x + 1
fin mientras
x: 10
mientras j ≤ extder
arr[x] = temp[j]
j = j + 1, x = x + 1
fin mientras

©® Dr. Alfredo Gutiérrez 61


54 67 36 85 29 87 66 64 2 23

54 67 36 85 29 87 66 64 2 23

54 67 36 85 29 87 66 64 2 23

54 67 36 85 29 87 66 64 2 23

54 67 87 66

54 67 66 87

36 54 67 29 85 64 66 87 2 23

29 36 54 67 85 2 23 64 66 87

2 23 29 36 54 64 66 67 85 87

©® Dr. Alfredo Gutiérrez 62


función: mezcla
recibe: arr[], extizq, extder
regresa: nada
¿extizq ≥ extder?
Sí: terminar Criterio de paro
medio =(extizq + extder) / 2
llamar: mezcla arr, extizq, medio “Divide y vencerás”
llamar: mezcla arr, medio + 1, extder
temp[extizq .. extder] = arr[extizq .. extder] Intercalación
i = extizq, j = medio + 1, x = extizq
mientras i ≤ medio y j ≤ extder
mientras i ≤ medio y temp[i] ≤ temp[j]
arr[x] = temp[i], i = i + 1, x = x + 1
fin mientras
¿i ≤ medio?
Sí: mientras j ≤ extder y temp[j] ≤ temp[i]
arr[x] = temp[j], j = j + 1, x = x + 1
fin mientras
fin mientras
mientras i ≤ medio
arr[x] = temp[i] , i = i + 1, x = x + 1
fin mientras
mientras j ≤ extder
arr[x] = temp[j], j = j + 1, x = x + 1
fin mientras

©® Dr. Alfredo Gutiérrez 63

S-ar putea să vă placă și