Logo Studenta

Estructuras de Datos I - Ordenamientos Iterativos Shell

¡Este material tiene más páginas!

Vista previa del material en texto

Estructuras de Datos I
Ordenamientos Iterativos
Shell Sort
Iterativo
Basado en intercambios
Diferencial decremental
Consiste en encontrar el menor de todos los elementos del vector e intercambiarlo con el que está en la primera posición. Luego el segundo mas pequeño, y así sucesivamente hasta ordenarlo todo.
54
43
1
73
44
Shell Sort
1
43
54
73
44
Shell Sort
1
43
54
73
44
Shell Sort
1
43
54
73
44
Shell Sort
1
43
54
73
44
Shell Sort
1
43
54
73
44
Shell Sort
1
43
54
73
44
Shell Sort
1
43
54
44
73
Shell Sort
1
43
54
44
73
Shell Sort
1
43
54
44
73
Shell Sort
1
43
54
44
73
Shell Sort
1
43
54
44
73
Shell Sort
1
43
54
44
73
Shell Sort
1
43
54
44
73
Shell Sort
1
43
54
44
73
Shell Sort
1
43
54
44
73
Shell Sort
1
43
54
44
73
Shell Sort
Función: ShellSort
Recibe: datos[ ], ultInd
Regresa: nada
	factor = 1 / 2
	dif = (ultInd + 1) * factor
	mientras dif > 0
		i = dif
		mientras i <= ultInd
			J= i
			mientras J >= dif AND datos[J - dif] > datos[J]
				intercambiar datos[J-dif] por datos[J]
				J = J – 1
			fin mientras
			i = i +1
		fin mientras
		dif = dif * factor
	fin mientras
Shell Sort
54
43
1
73
44
4
ultInd
dif
factor
0
1
2
3
4
J
i
Función: ShellSort
Recibe: datos[ ], ultInd
Regresa: nada
	factor = 1 / 2
	dif = (ultInd + 1) * factor
	mientras dif > 0
		i = dif
		mientras i <= ultInd
			J= i
			mientras J >= dif AND datos[J - dif] > datos[J]
				intercambiar datos[J-dif] por datos[J]
				J = J – 1
			fin mientras
			i = i +1
		fin mientras
		dif = dif * factor
	fin mientras
54
43
1
73
44
4
0.5
ultInd
dif
factor
0
1
2
3
4
J
i
Función: ShellSort
Recibe: datos[ ], ultInd
Regresa: nada
	factor = 1 / 2
	dif = (ultInd + 1) * factor
	mientras dif > 0
		i = dif
		mientras i <= ultInd
			J= i
			mientras J >= dif AND datos[J - dif] > datos[J]
				intercambiar datos[J-dif] por datos[J]
				J = J – 1
			fin mientras
			i = i +1
		fin mientras
		dif = dif * factor
	fin mientras
54
43
1
73
44
4
0.5
2
ultInd
dif
factor
0
1
2
3
4
J
i
Función: ShellSort
Recibe: datos[ ], ultInd
Regresa: nada
	factor = 1 / 2
	dif = (ultInd + 1) * factor
	mientras dif > 0
		i = dif
		mientras i <= ultInd
			J= i
			mientras J >= dif AND datos[J - dif] > datos[J]
				intercambiar datos[J-dif] por datos[J]
				J = J – 1
			fin mientras
			i = i +1
		fin mientras
		dif = dif * factor
	fin mientras
54
43
1
73
44
4
0.5
2
ultInd
dif
factor
0
1
2
3
4
J
i
Función: ShellSort
Recibe: datos[ ], ultInd
Regresa: nada
	factor = 1 / 2
	dif = (ultInd + 1) * factor
	mientras dif > 0
		i = dif
		mientras i <= ultInd
			J= i
			mientras J >= dif AND datos[J - dif] > datos[J]
				intercambiar datos[J-dif] por datos[J]
				J = J – 1
			fin mientras
			i = i +1
		fin mientras
		dif = dif * factor
	fin mientras
54
43
1
73
44
4
0.5
2
ultInd
dif
factor
0
1
2
3
4
2
J
i
Función: ShellSort
Recibe: datos[ ], ultInd
Regresa: nada
	factor = 1 / 2
	dif = (ultInd + 1) * factor
	mientras dif > 0
		i = dif
		mientras i <= ultInd
			J= i
			mientras J >= dif AND datos[J - dif] > datos[J]
				intercambiar datos[J-dif] por datos[J]
				J = J – 1
			fin mientras
			i = i +1
		fin mientras
		dif = dif * factor
	fin mientras
54
43
1
73
44
4
0.5
2
ultInd
dif
factor
0
1
2
3
4
2
J
i
Función: ShellSort
Recibe: datos[ ], ultInd
Regresa: nada
	factor = 1 / 2
	dif = (ultInd + 1) * factor
	mientras dif > 0
		i = dif
		mientras i <= ultInd
			J= i
			mientras J >= dif AND datos[J - dif] > datos[J]
				intercambiar datos[J-dif] por datos[J]
				J = J – 1
			fin mientras
			i = i +1
		fin mientras
		dif = dif * factor
	fin mientras
54
43
1
73
44
4
0.5
2
ultInd
dif
factor
0
1
2
3
4
2
2
J
i
Función: ShellSort
Recibe: datos[ ], ultInd
Regresa: nada
	factor = 1 / 2
	dif = (ultInd + 1) * factor
	mientras dif > 0
		i = dif
		mientras i <= ultInd
			J= i
			mientras J >= dif AND datos[J - dif] > datos[J]
				intercambiar datos[J-dif] por datos[J]
				J = J – 1
			fin mientras
			i = i +1
		fin mientras
		dif = dif * factor
	fin mientras
54
43
1
73
44
4
0.5
2
ultInd
dif
factor
0
1
2
3
4
2
2
J
i
Función: ShellSort
Recibe: datos[ ], ultInd
Regresa: nada
	factor = 1 / 2
	dif = (ultInd + 1) * factor
	mientras dif > 0
		i = dif
		mientras i <= ultInd
			J= i
			mientras J >= dif AND datos[J - dif] > datos[J]
				intercambiar datos[J-dif] por datos[J]
				J = J – 1
			fin mientras
			i = i +1
		fin mientras
		dif = dif * factor
	fin mientras
54
43
1
73
44
4
0.5
2
ultInd
dif
factor
0
1
2
3
4
3
2
J
i
Función: ShellSort
Recibe: datos[ ], ultInd
Regresa: nada
	factor = 1 / 2
	dif = (ultInd + 1) * factor
	mientras dif > 0
		i = dif
		mientras i <= ultInd
			J= i
			mientras J >= dif AND datos[J - dif] > datos[J]
				intercambiar datos[J-dif] por datos[J]
				J = J – 1
			fin mientras
			i = i +1
		fin mientras
		dif = dif * factor
	fin mientras
54
43
1
73
44
4
0.5
2
ultInd
dif
factor
0
1
2
3
4
3
2
J
i
Función: ShellSort
Recibe: datos[ ], ultInd
Regresa: nada
	factor = 1 / 2
	dif = (ultInd + 1) * factor
	mientras dif > 0
		i = dif
		mientras i <= ultInd
			J= i
			mientras J >= dif AND datos[J - dif] > datos[J]
				intercambiar datos[J-dif] por datos[J]
				J = J – 1
			fin mientras
			i = i +1
		fin mientras
		dif = dif * factor
	fin mientras
54
43
1
73
44
4
0.5
2
ultInd
dif
factor
0
1
2
3
4
3
3
J
i
Función: ShellSort
Recibe: datos[ ], ultInd
Regresa: nada
	factor = 1 / 2
	dif = (ultInd + 1) * factor
	mientras dif > 0
		i = dif
		mientras i <= ultInd
			J= i
			mientras J >= dif AND datos[J - dif] > datos[J]
				intercambiar datos[J-dif] por datos[J]
				J = J – 1
			fin mientras
			i = i +1
		fin mientras
		dif = dif * factor
	fin mientras
54
43
1
73
44
4
0.5
2
ultInd
dif
factor
0
1
2
3
4
3
3
J
i
Función: ShellSort
Recibe: datos[ ], ultInd
Regresa: nada
	factor = 1 / 2
	dif = (ultInd + 1) * factor
	mientras dif > 0
		i = dif
		mientras i <= ultInd
			J= i
			mientras J >= dif AND datos[J - dif] > datos[J]
				intercambiar datos[J-dif] por datos[J]
				J = J – 1
			fin mientras
			i = i +1
		fin mientras
		dif = dif * factor
	fin mientras
54
1
43
73
44
4
0.5
2
ultInd
dif
factor
0
1
2
3
4
3
3
J
i
Función: ShellSort
Recibe: datos[ ], ultInd
Regresa: nada
	factor = 1 / 2
	dif = (ultInd + 1) * factor
	mientras dif > 0
		i = dif
		mientras i <= ultInd
			J= i
			mientras J >= dif AND datos[J - dif] > datos[J]
				intercambiar datos[J-dif] por datos[J]
				J = J – 1
			fin mientras
			i = i +1
		fin mientras
		dif = dif * factor
	fin mientras
54
1
43
73
44
4
0.5
2
ultInd
dif
factor
0
1
2
3
4
3
2
J
i
Función: ShellSort
Recibe: datos[ ], ultInd
Regresa: nada
	factor = 1 / 2
	dif = (ultInd + 1) * factor
	mientras dif > 0
		i = dif
		mientras i <= ultInd
			J= i
			mientras J >= dif AND datos[J - dif] > datos[J]
				intercambiar datos[J-dif] por datos[J]
				J = J – 1
			fin mientras
			i = i +1
		fin mientras
		dif = dif * factor
	fin mientras
54
1
43
73
44
4
0.5
2
ultInd
dif
factor
0
1
2
3
4
3
2
J
i
Función: ShellSort
Recibe: datos[ ], ultInd
Regresa: nada
	factor = 1 / 2
	dif = (ultInd + 1) * factor
	mientras dif > 0
		i = dif
		mientras i <= ultInd
			J= i
			mientras J >= dif AND datos[J - dif] > datos[J]
				intercambiar datos[J-dif] por datos[J]
				J = J – 1
			fin mientras
			i = i +1
		fin mientras
		dif = dif * factor
	fin mientras
54
1
43
73
44
4
0.5
2
ultInd
dif
factor
0
1
2
3
4
4
2
J
i
Función: ShellSort
Recibe: datos[ ], ultInd
Regresa: nada
	factor = 1 / 2
	dif = (ultInd + 1) * factor
	mientras dif > 0
		i = dif
		mientras i <= ultInd
			J= i
			mientras J >= dif AND datos[J - dif] > datos[J]
				intercambiar datos[J-dif] por datos[J]
				J = J – 1
			fin mientras
			i = i +1
		fin mientras
		dif = dif * factor
	fin mientras
54
1
43
73
44
4
0.5
2
ultInd
dif
factor
0
1
2
3
4
4
2
J
i
Función: ShellSort
Recibe: datos[ ], ultInd
Regresa: nada
	factor = 1 / 2
	dif = (ultInd + 1) * factor
	mientras dif > 0
		i = dif
		mientras i <= ultInd
			J= i
			mientras J >= dif AND datos[J - dif] > datos[J]
				intercambiar datos[J-dif] por datos[J]
				J = J – 1
			fin mientras
			i = i +1
		fin mientras
		dif = dif * factor
	fin mientras54
1
43
73
44
4
0.5
2
ultInd
dif
factor
0
1
2
3
4
4
4
J
i
Función: ShellSort
Recibe: datos[ ], ultInd
Regresa: nada
	factor = 1 / 2
	dif = (ultInd + 1) * factor
	mientras dif > 0
		i = dif
		mientras i <= ultInd
			J= i
			mientras J >= dif AND datos[J - dif] > datos[J]
				intercambiar datos[J-dif] por datos[J]
				J = J – 1
			fin mientras
			i = i +1
		fin mientras
		dif = dif * factor
	fin mientras
54
1
43
73
44
4
0.5
2
ultInd
dif
factor
0
1
2
3
4
4
4
J
i
Función: ShellSort
Recibe: datos[ ], ultInd
Regresa: nada
	factor = 1 / 2
	dif = (ultInd + 1) * factor
	mientras dif > 0
		i = dif
		mientras i <= ultInd
			J= i
			mientras J >= dif AND datos[J - dif] > datos[J]
				intercambiar datos[J-dif] por datos[J]
				J = J – 1
			fin mientras
			i = i +1
		fin mientras
		dif = dif * factor
	fin mientras
54
1
43
44
73
4
0.5
2
ultInd
dif
factor
0
1
2
3
4
4
4
J
i
Función: ShellSort
Recibe: datos[ ], ultInd
Regresa: nada
	factor = 1 / 2
	dif = (ultInd + 1) * factor
	mientras dif > 0
		i = dif
		mientras i <= ultInd
			J= i
			mientras J >= dif AND datos[J - dif] > datos[J]
				intercambiar datos[J-dif] por datos[J]
				J = J – 1
			fin mientras
			i = i +1
		fin mientras
		dif = dif * factor
	fin mientras
54
1
43
44
73
4
0.5
2
ultInd
dif
factor
0
1
2
3
4
4
3
J
i
Función: ShellSort
Recibe: datos[ ], ultInd
Regresa: nada
	factor = 1 / 2
	dif = (ultInd + 1) * factor
	mientras dif > 0
		i = dif
		mientras i <= ultInd
			J= i
			mientras J >= dif AND datos[J - dif] > datos[J]
				intercambiar datos[J-dif] por datos[J]
				J = J – 1
			fin mientras
			i = i +1
		fin mientras
		dif = dif * factor
	fin mientras
54
1
43
44
73
4
0.5
2
ultInd
dif
factor
0
1
2
3
4
4
3
J
i
Función: ShellSort
Recibe: datos[ ], ultInd
Regresa: nada
	factor = 1 / 2
	dif = (ultInd + 1) * factor
	mientras dif > 0
		i = dif
		mientras i <= ultInd
			J= i
			mientras J >= dif AND datos[J - dif] > datos[J]
				intercambiar datos[J-dif] por datos[J]
				J = J – 1
			fin mientras
			i = i +1
		fin mientras
		dif = dif * factor
	fin mientras
54
1
43
44
73
4
0.5
2
ultInd
dif
factor
0
1
2
3
4
5
3
J
i
Función: ShellSort
Recibe: datos[ ], ultInd
Regresa: nada
	factor = 1 / 2
	dif = (ultInd + 1) * factor
	mientras dif > 0
		i = dif
		mientras i <= ultInd
			J= i
			mientras J >= dif AND datos[J - dif] > datos[J]
				intercambiar datos[J-dif] por datos[J]
				J = J – 1
			fin mientras
			i = i +1
		fin mientras
		dif = dif * factor
	fin mientras
54
1
43
44
73
4
0.5
2
ultInd
dif
factor
0
1
2
3
4
5
3
J
i
Función: ShellSort
Recibe: datos[ ], ultInd
Regresa: nada
	factor = 1 / 2
	dif = (ultInd + 1) * factor
	mientras dif > 0
		i = dif
		mientras i <= ultInd
			J= i
			mientras J >= dif AND datos[J - dif] > datos[J]
				intercambiar datos[J-dif] por datos[J]
				J = J – 1
			fin mientras
			i = i +1
		fin mientras
		dif = dif * factor
	fin mientras
54
1
43
44
73
4
0.5
1
ultInd
dif
factor
0
1
2
3
4
5
3
J
i
Función: ShellSort
Recibe: datos[ ], ultInd
Regresa: nada
	factor = 1 / 2
	dif = (ultInd + 1) * factor
	mientras dif > 0
		i = dif
		mientras i <= ultInd
			J= i
			mientras J >= dif AND datos[J - dif] > datos[J]
				intercambiar datos[J-dif] por datos[J]
				J = J – 1
			fin mientras
			i = i +1
		fin mientras
		dif = dif * factor
	fin mientras
54
1
43
44
73
4
0.5
1
ultInd
dif
factor
0
1
2
3
4
5
3
J
i
Función: ShellSort
Recibe: datos[ ], ultInd
Regresa: nada
	factor = 1 / 2
	dif = (ultInd + 1) * factor
	mientras dif > 0
		i = dif
		mientras i <= ultInd
			J= i
			mientras J >= dif AND datos[J - dif] > datos[J]
				intercambiar datos[J-dif] por datos[J]
				J = J – 1
			fin mientras
			i = i +1
		fin mientras
		dif = dif * factor
	fin mientras
54
1
43
44
73
4
0.5
1
ultInd
dif
factor
0
1
2
3
4
1
3
J
i
Función: ShellSort
Recibe: datos[ ], ultInd
Regresa: nada
	factor = 1 / 2
	dif = (ultInd + 1) * factor
	mientras dif > 0
		i = dif
		mientras i <= ultInd
			J= i
			mientras J >= dif AND datos[J - dif] > datos[J]
				intercambiar datos[J-dif] por datos[J]
				J = J – 1
			fin mientras
			i = i +1
		fin mientras
		dif = dif * factor
	fin mientras
54
1
43
44
73
4
0.5
1
ultInd
dif
factor
0
1
2
3
4
1
3
J
i
Función: ShellSort
Recibe: datos[ ], ultInd
Regresa: nada
	factor = 1 / 2
	dif = (ultInd + 1) * factor
	mientras dif > 0
		i = dif
		mientras i <= ultInd
			J= i
			mientras J >= dif AND datos[J - dif] > datos[J]
				intercambiar datos[J-dif] por datos[J]
				J = J – 1
			fin mientras
			i = i +1
		fin mientras
		dif = dif * factor
	fin mientras
54
1
43
44
73
4
0.5
1
ultInd
dif
factor
0
1
2
3
4
1
1
J
i
Función: ShellSort
Recibe: datos[ ], ultInd
Regresa: nada
	factor = 1 / 2
	dif = (ultInd + 1) * factor
	mientras dif > 0
		i = dif
		mientras i <= ultInd
			J= i
			mientras J >= dif AND datos[J - dif] > datos[J]
				intercambiar datos[J-dif] por datos[J]
				J = J – 1
			fin mientras
			i = i +1
		fin mientras
		dif = dif * factor
	fin mientras
54
1
43
44
73
4
0.5
1
ultInd
dif
factor
0
1
2
3
4
1
1
J
i
Función: ShellSort
Recibe: datos[ ], ultInd
Regresa: nada
	factor = 1 / 2
	dif = (ultInd + 1) * factor
	mientras dif > 0
		i = dif
		mientras i <= ultInd
			J= i
			mientras J >= dif AND datos[J - dif] > datos[J]
				intercambiar datos[J-dif] por datos[J]
				J = J – 1
			fin mientras
			i = i +1
		fin mientras
		dif = dif * factor
	fin mientras
1
54
43
44
73
4
0.5
1
ultInd
dif
factor
0
1
2
3
4
1
1
J
i
Función: ShellSort
Recibe: datos[ ], ultInd
Regresa: nada
	factor = 1 / 2
	dif = (ultInd + 1) * factor
	mientras dif > 0
		i = dif
		mientras i <= ultInd
			J= i
			mientras J >= dif AND datos[J - dif] > datos[J]
				intercambiar datos[J-dif] por datos[J]
				J = J – 1
			fin mientras
			i = i +1
		fin mientras
		dif = dif * factor
	fin mientras
1
54
43
44
73
4
0.5
1
ultInd
dif
factor
0
1
2
3
4
1
0
J
i
Función: ShellSort
Recibe: datos[ ], ultInd
Regresa: nada
	factor = 1 / 2
	dif = (ultInd + 1) * factor
	mientras dif > 0
		i = dif
		mientras i <= ultInd
			J= i
			mientras J >= dif AND datos[J - dif] > datos[J]
				intercambiar datos[J-dif] por datos[J]
				J = J – 1
			fin mientras
			i = i +1
		fin mientras
		dif = dif * factor
	fin mientras
1
54
43
44
73
4
0.5
1
ultInd
dif
factor
0
1
2
3
4
1
0
J
i
Función: ShellSort
Recibe: datos[ ], ultInd
Regresa: nada
	factor = 1 / 2
	dif = (ultInd + 1) * factor
	mientras dif > 0
		i = dif
		mientras i <= ultInd
			J= i
			mientras J >= dif AND datos[J - dif] > datos[J]
				intercambiar datos[J-dif] por datos[J]
				J = J – 1
			fin mientras
			i = i +1
		fin mientras
		dif = dif * factor
	fin mientras
1
54
43
44
73
4
0.5
1
ultInd
dif
factor
0
1
2
3
4
2
0
J
i
Función: ShellSort
Recibe: datos[ ], ultInd
Regresa: nada
	factor = 1 / 2
	dif = (ultInd + 1) * factor
	mientras dif > 0
		i = dif
		mientras i <= ultInd
			J= i
			mientras J >= dif AND datos[J - dif] > datos[J]
				intercambiar datos[J-dif] por datos[J]
				J = J – 1
			fin mientras
			i = i +1
		fin mientras
		dif = dif * factor
	fin mientras
1
54
43
44
73
4
0.5
1
ultInd
dif
factor
0
1
2
3
4
2
0
J
i
Función: ShellSort
Recibe: datos[ ], ultInd
Regresa: nada
	factor = 1 / 2
	dif = (ultInd + 1) * factor
	mientras dif > 0
		i = dif
		mientras i <= ultInd
			J= i
			mientras J >= dif AND datos[J - dif] > datos[J]
				intercambiar datos[J-dif] por datos[J]
				J = J – 1
			fin mientras
			i = i +1
		fin mientras
		dif = dif * factor
	fin mientras
1
54
43
44
73
4
0.5
1
ultInd
dif
factor
0
1
2
3
4
2
2
J
i
Función: ShellSort
Recibe: datos[ ], ultInd
Regresa: nada
	factor = 1 / 2
	dif = (ultInd + 1) * factor
	mientras dif > 0
		i = dif
		mientras i <= ultInd
			J= i
			mientras J >= dif AND datos[J - dif] > datos[J]
				intercambiar datos[J-dif] por datos[J]
				J = J – 1
			fin mientras
			i = i +1
		fin mientras
		dif = dif * factor
	fin mientras
1
54
43
44
73
4
0.5
1
ultInd
dif
factor
0
1
2
3
4
2
2
J
i
Función: ShellSort
Recibe: datos[ ], ultInd
Regresa: nada
	factor = 1 / 2
	dif = (ultInd + 1) * factor
	mientras dif > 0
		i = dif
		mientras i <= ultInd
			J= i
			mientras J >= dif AND datos[J - dif] > datos[J]
				intercambiar datos[J-dif]por datos[J]
				J = J – 1
			fin mientras
			i = i +1
		fin mientras
		dif = dif * factor
	fin mientras
1
44
43
54
73
4
0.5
1
ultInd
dif
factor
0
1
2
3
4
2
2
J
i
Función: ShellSort
Recibe: datos[ ], ultInd
Regresa: nada
	factor = 1 / 2
	dif = (ultInd + 1) * factor
	mientras dif > 0
		i = dif
		mientras i <= ultInd
			J= i
			mientras J >= dif AND datos[J - dif] > datos[J]
				intercambiar datos[J-dif] por datos[J]
				J = J – 1
			fin mientras
			i = i +1
		fin mientras
		dif = dif * factor
	fin mientras
1
44
43
54
73
4
0.5
1
ultInd
dif
factor
0
1
2
3
4
2
1
J
i
Función: ShellSort
Recibe: datos[ ], ultInd
Regresa: nada
	factor = 1 / 2
	dif = (ultInd + 1) * factor
	mientras dif > 0
		i = dif
		mientras i <= ultInd
			J= i
			mientras J >= dif AND datos[J - dif] > datos[J]
				intercambiar datos[J-dif] por datos[J]
				J = J – 1
			fin mientras
			i = i +1
		fin mientras
		dif = dif * factor
	fin mientras
1
44
43
54
73
4
0.5
1
ultInd
dif
factor
0
1
2
3
4
2
1
J
i
Función: ShellSort
Recibe: datos[ ], ultInd
Regresa: nada
	factor = 1 / 2
	dif = (ultInd + 1) * factor
	mientras dif > 0
		i = dif
		mientras i <= ultInd
			J= i
			mientras J >= dif AND datos[J - dif] > datos[J]
				intercambiar datos[J-dif] por datos[J]
				J = J – 1
			fin mientras
			i = i +1
		fin mientras
		dif = dif * factor
	fin mientras
1
44
43
54
73
4
0.5
1
ultInd
dif
factor
0
1
2
3
4
3
1
J
i
Función: ShellSort
Recibe: datos[ ], ultInd
Regresa: nada
	factor = 1 / 2
	dif = (ultInd + 1) * factor
	mientras dif > 0
		i = dif
		mientras i <= ultInd
			J= i
			mientras J >= dif AND datos[J - dif] > datos[J]
				intercambiar datos[J-dif] por datos[J]
				J = J – 1
			fin mientras
			i = i +1
		fin mientras
		dif = dif * factor
	fin mientras
1
44
43
54
73
4
0.5
1
ultInd
dif
factor
0
1
2
3
4
3
1
J
i
Función: ShellSort
Recibe: datos[ ], ultInd
Regresa: nada
	factor = 1 / 2
	dif = (ultInd + 1) * factor
	mientras dif > 0
		i = dif
		mientras i <= ultInd
			J= i
			mientras J >= dif AND datos[J - dif] > datos[J]
				intercambiar datos[J-dif] por datos[J]
				J = J – 1
			fin mientras
			i = i +1
		fin mientras
		dif = dif * factor
	fin mientras
1
44
43
54
73
4
0.5
1
ultInd
dif
factor
0
1
2
3
4
3
3
J
i
Función: ShellSort
Recibe: datos[ ], ultInd
Regresa: nada
	factor = 1 / 2
	dif = (ultInd + 1) * factor
	mientras dif > 0
		i = dif
		mientras i <= ultInd
			J= i
			mientras J >= dif AND datos[J - dif] > datos[J]
				intercambiar datos[J-dif] por datos[J]
				J = J – 1
			fin mientras
			i = i +1
		fin mientras
		dif = dif * factor
	fin mientras
1
44
43
54
73
4
0.5
1
ultInd
dif
factor
0
1
2
3
4
3
3
J
i
Función: ShellSort
Recibe: datos[ ], ultInd
Regresa: nada
	factor = 1 / 2
	dif = (ultInd + 1) * factor
	mientras dif > 0
		i = dif
		mientras i <= ultInd
			J= i
			mientras J >= dif AND datos[J - dif] > datos[J]
				intercambiar datos[J-dif] por datos[J]
				J = J – 1
			fin mientras
			i = i +1
		fin mientras
		dif = dif * factor
	fin mientras
1
44
54
43
73
4
0.5
1
ultInd
dif
factor
0
1
2
3
4
3
3
J
i
Función: ShellSort
Recibe: datos[ ], ultInd
Regresa: nada
	factor = 1 / 2
	dif = (ultInd + 1) * factor
	mientras dif > 0
		i = dif
		mientras i <= ultInd
			J= i
			mientras J >= dif AND datos[J - dif] > datos[J]
				intercambiar datos[J-dif] por datos[J]
				J = J – 1
			fin mientras
			i = i +1
		fin mientras
		dif = dif * factor
	fin mientras
1
44
54
43
73
4
0.5
1
ultInd
dif
factor
0
1
2
3
4
3
2
J
i
Función: ShellSort
Recibe: datos[ ], ultInd
Regresa: nada
	factor = 1 / 2
	dif = (ultInd + 1) * factor
	mientras dif > 0
		i = dif
		mientras i <= ultInd
			J= i
			mientras J >= dif AND datos[J - dif] > datos[J]
				intercambiar datos[J-dif] por datos[J]
				J = J – 1
			fin mientras
			i = i +1
		fin mientras
		dif = dif * factor
	fin mientras
1
44
54
43
73
4
0.5
1
ultInd
dif
factor
0
1
2
3
4
3
2
J
i
Función: ShellSort
Recibe: datos[ ], ultInd
Regresa: nada
	factor = 1 / 2
	dif = (ultInd + 1) * factor
	mientras dif > 0
		i = dif
		mientras i <= ultInd
			J= i
			mientras J >= dif AND datos[J - dif] > datos[J]
				intercambiar datos[J-dif] por datos[J]
				J = J – 1
			fin mientras
			i = i +1
		fin mientras
		dif = dif * factor
	fin mientras
1
43
54
44
73
4
0.5
1
ultInd
dif
factor
0
1
2
3
4
3
2
J
i
Función: ShellSort
Recibe: datos[ ], ultInd
Regresa: nada
	factor = 1 / 2
	dif = (ultInd + 1) * factor
	mientras dif > 0
		i = dif
		mientras i <= ultInd
			J= i
			mientras J >= dif AND datos[J - dif] > datos[J]
				intercambiar datos[J-dif] por datos[J]
				J = J – 1
			fin mientras
			i = i +1
		fin mientras
		dif = dif * factor
	fin mientras
1
43
54
44
73
4
0.5
1
ultInd
dif
factor
0
1
2
3
4
3
1
J
i
Función: ShellSort
Recibe: datos[ ], ultInd
Regresa: nada
	factor = 1 / 2
	dif = (ultInd + 1) * factor
	mientras dif > 0
		i = dif
		mientras i <= ultInd
			J= i
			mientras J >= dif AND datos[J - dif] > datos[J]
				intercambiar datos[J-dif] por datos[J]
				J = J – 1
			fin mientras
			i = i +1
		fin mientras
		dif = dif * factor
	fin mientras
1
43
54
44
73
4
0.5
1
ultInd
dif
factor
0
1
2
3
4
3
1
J
i
Función: ShellSort
Recibe: datos[ ], ultInd
Regresa: nada
	factor = 1 / 2
	dif = (ultInd + 1) * factor
	mientras dif > 0
		i = dif
		mientras i <= ultInd
			J= i
			mientras J >= dif AND datos[J - dif] > datos[J]
				intercambiar datos[J-dif] por datos[J]
				J = J – 1
			fin mientras
			i = i +1
		fin mientras
		dif = dif * factor
	fin mientras
1
43
54
44
73
4
0.5
1
ultInd
dif
factor
0
1
2
3
4
4
1
J
i
Función: ShellSort
Recibe: datos[ ], ultInd
Regresa: nada
	factor = 1 / 2
	dif = (ultInd + 1) * factor
	mientras dif > 0
		i = dif
		mientras i <= ultInd
			J= i
			mientras J >= dif AND datos[J - dif] > datos[J]
				intercambiar datos[J-dif] por datos[J]
				J = J – 1
			fin mientras
			i = i +1
		fin mientras
		dif = dif * factor
	fin mientras
1
43
54
44
73
4
0.5
1
ultInd
dif
factor
0
1
2
3
4
4
1
J
i
Función: ShellSort
Recibe: datos[ ], ultInd
Regresa: nada
	factor = 1 / 2
	dif = (ultInd + 1) * factor
	mientras dif > 0
		i = dif
		mientras i <= ultInd
			J= i
			mientras J >= dif AND datos[J - dif] > datos[J]
				intercambiar datos[J-dif] por datos[J]
				J = J – 1
			fin mientras
			i = i +1
		fin mientras
		dif = dif * factor
	fin mientras
1
43
54
44
73
4
0.5
1
ultInd
dif
factor
0
1
2
3
4
4
4
J
i
Función: ShellSort
Recibe: datos[ ], ultInd
Regresa: nada
	factor = 1 / 2
	dif = (ultInd + 1) * factor
	mientras dif > 0
		i = dif
		mientras i <= ultInd
			J= i
			mientras J >= dif AND datos[J - dif] > datos[J]
				intercambiar datos[J-dif] por datos[J]
				J = J – 1
			fin mientras
			i = i +1
		fin mientras
		dif = dif * factor
	fin mientras
1
43
54
44
73
4
0.5
1
ultInd
dif
factor
0
1
2
3
4
4
4
J
i
Función: ShellSort
Recibe: datos[ ], ultInd
Regresa: nada
	factor = 1 / 2
	dif = (ultInd + 1) * factor
	mientras dif > 0
		i = dif
		mientras i <= ultInd
			J= i
			mientras J >= dif AND datos[J - dif] > datos[J]
				intercambiar datos[J-dif] por datos[J]
				J = J – 1
			fin mientras
			i = i +1
		fin mientras
		dif = dif * factor
	fin mientras
1
43
54
44
73
4
0.5
1
ultInd
dif
factor
0
1
2
3
4
5
4
J
i
Función: ShellSort
Recibe: datos[ ], ultInd
Regresa: nada
	factor = 1 / 2
	dif = (ultInd + 1) * factor
	mientras dif > 0
		i = dif
		mientras i <= ultInd
			J= i
			mientras J >= dif AND datos[J - dif] > datos[J]
				intercambiar datos[J-dif] por datos[J]
				J = J – 1
			fin mientras
			i = i +1
		fin mientras
		dif = dif * factor
	fin mientras
1
43
54
44
73
4
0.5
1
ultInd
dif
factor
0
1
2
3
4
5
4
J
i
Función: ShellSort
Recibe: datos[ ], ultInd
Regresa: nada
	factor = 1 / 2
	dif = (ultInd + 1) * factor
	mientras dif > 0
		i = dif
		mientras i <= ultInd
			J= i
			mientras J >= dif AND datos[J - dif] > datos[J]
				intercambiar datos[J-dif] por datos[J]
				J = J – 1
			fin mientras
			i = i +1
		fin mientras
		dif = dif * factor
	fin mientras
1
43
54
44
73
4
0.5
0
ultInd
dif
factor
0
1
2
3
4
5
4
J
i
Función: ShellSort
Recibe: datos[ ], ultInd
Regresa: nada
	factor = 1 / 2
	dif = (ultInd + 1) * factor
	mientras dif > 0
		i = difmientras i <= ultInd
			J= i
			mientras J >= dif AND datos[J - dif] > datos[J]
				intercambiar datos[J-dif] por datos[J]
				J = J – 1
			fin mientras
			i = i +1
		fin mientras
		dif = dif * factor
	fin mientras
1
43
54
44
73
4
0.5
0
ultInd
dif
factor
0
1
2
3
4
5
4
J
i
Función: ShellSort
Recibe: datos[ ], ultInd
Regresa: nada
	factor = 1 / 2
	dif = (ultInd + 1) * factor
	mientras dif > 0
		i = dif
		mientras i <= ultInd
			J= i
			mientras J >= dif AND datos[J - dif] > datos[J]
				intercambiar datos[J-dif] por datos[J]
				J = J – 1
			fin mientras
			i = i +1
		fin mientras
		dif = dif * factor
	fin mientras
1
43
54
44
73
4
0.5
0
ultInd
dif
factor
0
1
2
3
4
5
4
J
i
Función: ShellSort
Recibe: datos[ ], ultInd
Regresa: nada
	factor = 1 / 2
	dif = (ultInd + 1) * factor
	mientras dif > 0
		i = dif
		mientras i <= ultInd
			J= i
			mientras J >= dif AND datos[J - dif] > datos[J]
				intercambiar datos[J-dif] por datos[J]
				J = J – 1
			fin mientras
			i = i +1
		fin mientras
		dif = dif * factor
	fin mientras

Continuar navegando