Initial data commit

This commit is contained in:
Ingy döt Net 2023-07-01 11:58:00 -04:00
parent 72d218235f
commit f23f22d71c
199087 changed files with 3378941 additions and 0 deletions

View file

@ -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