Initial data commit
This commit is contained in:
parent
72d218235f
commit
f23f22d71c
199087 changed files with 3378941 additions and 0 deletions
|
|
@ -0,0 +1,88 @@
|
|||
dim b(9)
|
||||
|
||||
sub copyArray(a(), inicio, final, b())
|
||||
dim b(final - 1)
|
||||
for k = inicio to final - 1
|
||||
b(k) = a(k)
|
||||
next
|
||||
end sub
|
||||
|
||||
// La mitad izquierda es a(inicio to mitad-1).
|
||||
// La mitad derecha es a(mitad to final-1).
|
||||
// El resultado es b(inicio to final-1).
|
||||
sub topDownMerge(a(), inicio, mitad, final, b())
|
||||
i = inicio
|
||||
j = mitad
|
||||
|
||||
// Si bien hay elementos en los recorridos izquierdo o derecho ...
|
||||
for k = inicio to final - 1
|
||||
// Si existe un inicio de recorrido izquierdo y es <= inicio de recorrido derecho existente.
|
||||
if (i < mitad) and (j >= final or a(i) <= a(j)) then
|
||||
b(k) = a(i)
|
||||
i = i + 1
|
||||
else
|
||||
b(k) = a(j)
|
||||
j = j + 1
|
||||
end if
|
||||
next
|
||||
end sub
|
||||
|
||||
// Ordenar la matriz a() usando la matriz b() como fuente.
|
||||
// inicio es inclusivo; final es exclusivo (a(final) no está en el conjunto).
|
||||
sub topDownSplitMerge(b(), inicio, final, a())
|
||||
if (final - inicio) < 2 then return : fi // Si la diferencia = 1, considérelo ordenado
|
||||
// dividir la ejecución de más de 1 elemento en mitades
|
||||
mitad = int((final + inicio) / 2) // mitad = punto medio
|
||||
// recursively sort both runs from array a() into b()
|
||||
topDownSplitMerge(a(), inicio, mitad, b()) // ordenar la parte izquierda
|
||||
topDownSplitMerge(a(), mitad, final, b()) // ordenar la parte derecha
|
||||
// fusionar las ejecuciones resultantes de la matriz b() en a()
|
||||
topDownMerge(b(), inicio, mitad, final, a())
|
||||
end sub
|
||||
|
||||
// El array a() tiene los elementos para ordenar; array b() es una matriz de trabajo (inicialmente vacía).
|
||||
sub topDownMergeSort(a(), b(), n)
|
||||
copyArray(a(), 0, n, b()) // duplicar la matriz a() en b()
|
||||
topDownSplitMerge(b(), 0, n, a()) // ordenar los datos de b() en a()
|
||||
end sub
|
||||
|
||||
sub printArray(a())
|
||||
for i = 1 to arraysize(a(),1)
|
||||
print a(i) using "####";
|
||||
next
|
||||
print
|
||||
end sub
|
||||
|
||||
|
||||
//--------------------------
|
||||
label a1
|
||||
data 4, 65, 2, -31, 0, 99, 2, 83, 782, 1
|
||||
label a2
|
||||
data 7, 5, 2, 6, 1, 4, 2, 6, 3
|
||||
|
||||
dim a(9)
|
||||
restore a1
|
||||
for i = 0 to 9
|
||||
read p
|
||||
a(i) = p
|
||||
next i
|
||||
|
||||
dim a2(8)
|
||||
restore a2
|
||||
for i = 0 to 8
|
||||
read p
|
||||
a2(i) = p
|
||||
next i
|
||||
|
||||
print "unsort ";
|
||||
printArray(a())
|
||||
topDownMergeSort (a(), b(), 10)
|
||||
print " sort ";
|
||||
printArray(a())
|
||||
print
|
||||
print "unsort ";
|
||||
printArray(a2())
|
||||
topDownMergeSort (a2(), b(), 9)
|
||||
print " sort ";
|
||||
printArray(a2())
|
||||
end
|
||||
Loading…
Add table
Add a link
Reference in a new issue