Ayuda en algoritmo de mezcla y orden ascendente de matriz
Publicado: 20 Sep 2013, 20:41
Buenas,
En primer lugar, se que ya está hecho con las funciones de array short, pero lo que tengo que hacer es una función que se le pasen dos arrays ordenados previamente de menor a mayor y que esta función los mezcle y devuelva ordenados de menor a mayor.
Se que es facil pero me estoy liando, tengo esto:
Pero me da algunos fallos y no doy con la clave.
Echadme un cable porfa!!
Saludos!
En primer lugar, se que ya está hecho con las funciones de array short, pero lo que tengo que hacer es una función que se le pasen dos arrays ordenados previamente de menor a mayor y que esta función los mezcle y devuelva ordenados de menor a mayor.
Se que es facil pero me estoy liando, tengo esto:
Código: Seleccionar todo
#include <Array.au3>
Local $x1[3] = [1, 2, 5]
Local $y1[5] = [0, 3, 4, 6, 15]
$array = ordenar($x1, $y1)
_ArrayDisplay($array)
Func ordenar($x, $y)
$pos = 0;
$pOrdenado = 0;
Local $ordenado[UBound($x) + UBound($y)]
For $a = 0 To UBound($x) - 1
If ($x[$a] < $y[$pos]) Then
$ordenado[$pOrdenado] = $x[$a]
If (($a + 1) <= UBound($x)-1) Then
If $y[$pos] < $x[$a + 1] Then
$pOrdenado += 1
$ordenado[$pOrdenado] = $y[$pos]
Else
$pOrdenado += 1
$ordenado[$pOrdenado] = $x[$a+1]
if ($y[$pos]<$x[$a + 1]) Then
$pOrdenado += 1
$ordenado[$pOrdenado] = $y[$pos]
EndIf
EndIf
Else
$pOrdenado += 1
$ordenado[$pOrdenado] = $y[$pos]
EndIf
Else
$ordenado[$pOrdenado] = $y[$pos]
If ($x[$a] < $y[$pos + 1]) Then
$pOrdenado += 1
$ordenado[$pOrdenado] = $x[$a]
EndIf
EndIf
$pos += 1
$pOrdenado += 1
Next
If (UBound($x) < UBound($y)) Then
For $a = $pos To UBound($y) - 1
$ordenado[$pOrdenado] = $y[$a]
$pOrdenado += 1
Next
EndIf
Return $ordenado
EndFunc ;==>ordenar
Echadme un cable porfa!!
Saludos!