miércoles, 22 de julio de 2020
domingo, 19 de julio de 2020
domingo, 1 de marzo de 2020
Desordenar un vector numérico - codigo fuente -
Código fuente en lenguaje Vala del algoritmo desordenar un vector numérico mediante la técnica "Mezcla de naipes Fisher-Yates".
Compilar y ejecutar en Linux, por ejemplo, en CentOS 7.
Pasos:
En el 2º paso, se invoca al programa ejecutable VectorNum mostrando en pantalla el vector ordenado y luego el vector desordenado.
VectorNum.vala
Copie y pegue en un editor de texto el siguiente código fuente y guarde todo en un archivo: VectorNum.vala
// Programa : VectorNum.vala
// Autor : Octulio Biletán - Febrero de 2020.
// Propósito : Desordenar/mezclar los datos de un vector numérico
// mediante el uso del algoritmo "Mezcla de naipes Fisher-Yates".
// Compilar : valac -v --Xcc=-lm VectorNum.vala
// Referencias: https://bost.ocks.org/mike/shuffle/
//
public class VectorNum
{
// Desordena el vector numérico comenzando desde atrás hacia adelante
void barajar(int[] vnum)
{
int m = vnum.length; // último elemento del vector
int t; // var. temporaria
int i; // posición del elemento elegido al azar
// Mientras queden elementos a barajar...
while(m > 0)
{
// Elige un elemento al azar...
i = (int)Math.floor(Random.next_double() * m--);
// Y lo intercambia con el elemento actual.
t = vnum[m];
vnum[m] = vnum[i];
vnum[i] = t;
}
}
// Muestra el vector numérico en pantalla
void mostrar(int[] vnum)
{
for(int i = 0; i < vnum.length; i++)
{
stdout.printf("%d, ", vnum[i]);
}
}
static int main(string[] args)
{
// Vector entrada: sus datos están ordenados.
int ventrada[] = {-1,0,1,2,3,4,5,6,7,8,9,10};
VectorNum vector = new VectorNum();
stdout.printf("Vector ordenado:\n");
vector.mostrar(ventrada);
stdout.printf("\n");
// 1º llamado
vector.barajar(ventrada);
// 2º llamado
vector.barajar(ventrada);
stdout.printf("\nVector desordenado: con dos mezclas\n");
vector.mostrar(ventrada);
stdout.printf("\n");
return 0;
}
}
Más info. sobre Vala puede encontrar en Wikipedia:
es.wikipedia.org/wiki/Vala_(lenguaje_de_programación)
Compilar y ejecutar en Linux, por ejemplo, en CentOS 7.
Pasos:
- valac -v --Xcc=-lm VectorNum.vala
- ./VectorNum
![]() | |
| Compilación del programa VectorNum.vala |
En el 2º paso, se invoca al programa ejecutable VectorNum mostrando en pantalla el vector ordenado y luego el vector desordenado.
![]() | |
| Desordenar datos numéricos en un vector. |
VectorNum.vala
Copie y pegue en un editor de texto el siguiente código fuente y guarde todo en un archivo: VectorNum.vala
// Programa : VectorNum.vala
// Autor : Octulio Biletán - Febrero de 2020.
// Propósito : Desordenar/mezclar los datos de un vector numérico
// mediante el uso del algoritmo "Mezcla de naipes Fisher-Yates".
// Compilar : valac -v --Xcc=-lm VectorNum.vala
// Referencias: https://bost.ocks.org/mike/shuffle/
//
public class VectorNum
{
// Desordena el vector numérico comenzando desde atrás hacia adelante
void barajar(int[] vnum)
{
int m = vnum.length; // último elemento del vector
int t; // var. temporaria
int i; // posición del elemento elegido al azar
// Mientras queden elementos a barajar...
while(m > 0)
{
// Elige un elemento al azar...
i = (int)Math.floor(Random.next_double() * m--);
// Y lo intercambia con el elemento actual.
t = vnum[m];
vnum[m] = vnum[i];
vnum[i] = t;
}
}
// Muestra el vector numérico en pantalla
void mostrar(int[] vnum)
{
for(int i = 0; i < vnum.length; i++)
{
stdout.printf("%d, ", vnum[i]);
}
}
static int main(string[] args)
{
// Vector entrada: sus datos están ordenados.
int ventrada[] = {-1,0,1,2,3,4,5,6,7,8,9,10};
VectorNum vector = new VectorNum();
stdout.printf("Vector ordenado:\n");
vector.mostrar(ventrada);
stdout.printf("\n");
// 1º llamado
vector.barajar(ventrada);
// 2º llamado
vector.barajar(ventrada);
stdout.printf("\nVector desordenado: con dos mezclas\n");
vector.mostrar(ventrada);
stdout.printf("\n");
return 0;
}
}
Más info. sobre Vala puede encontrar en Wikipedia:
es.wikipedia.org/wiki/Vala_(lenguaje_de_programación)
miércoles, 19 de febrero de 2020
Desordenar un vector numérico
Análisis para realizar un algoritmo: desordenar un vector numérico que se
encuentra ordenado de menor a mayor o viceversa.
1º Caso:
Desordenar 3 elementos que se encuentran ordenados de menor a mayor o viceversa.
Cantidad de permutaciones que se deben realizar para obtener datos desordenados.
DesOrdenar(3) = 3! - 2 = 4
[abc], acb, bac, bca, cab, [cba]
[1,2,3] [3,2,1]
Excepto ==> [ ]
Desordenamiento efectivo: cuando todos sus elementos están fuera de su lugar de origen.
Conjunto: bca, cab ==> 2,3,1 ; 3,1,2
m,M,m ; M,m,M
Ejemplo para 12 elementos ordenados y desordenarlos tomando sus elementos en grupos de a 3:
Ordenados ==> 1,2,3,4,5,6,7,8,9,10,11,12
1º Conjunto Desordenado ==> 2,3,1,5,6,4,8,9,7,11,12,10
2º Conjunto Desordenado ==> 3,1,2,6,4,5,9,7,8,12,10,11
Ahora proceder a construir el algoritmo teniendo en cuenta al 1º Conjunto Desordenado o al 2º.
Luego de haber realizado dicho algoritmo transformarlo en un programa de computadora
eligiendo algún lenguaje de programación: Ada, Basic, C, C++, Go, Java, Julia,
Modula-3, Oberon-2, Pascal, Perl, PHP, Python, R, REXX, Smalltalk, SQL, Tcl,
Vala y otros más.
2º Caso:
Mezclar los elementos de un vector numérico ordenados de menor a mayor o viceversa.
Aunque no es un requisito necesario que el vector numérico esté ordenado también puede estar desordenado para hacer 'más desorden' en el mismo vector.
Usar el algoritmo "Mezcla de naipes Fisher-Yates".
Referencias:
encuentra ordenado de menor a mayor o viceversa.
1º Caso:
Desordenar 3 elementos que se encuentran ordenados de menor a mayor o viceversa.
Cantidad de permutaciones que se deben realizar para obtener datos desordenados.
DesOrdenar(3) = 3! - 2 = 4
[abc], acb, bac, bca, cab, [cba]
[1,2,3] [3,2,1]
Excepto ==> [ ]
Desordenamiento efectivo: cuando todos sus elementos están fuera de su lugar de origen.
Conjunto: bca, cab ==> 2,3,1 ; 3,1,2
m,M,m ; M,m,M
Ejemplo para 12 elementos ordenados y desordenarlos tomando sus elementos en grupos de a 3:
Ordenados ==> 1,2,3,4,5,6,7,8,9,10,11,12
1º Conjunto Desordenado ==> 2,3,1,5,6,4,8,9,7,11,12,10
2º Conjunto Desordenado ==> 3,1,2,6,4,5,9,7,8,12,10,11
Ahora proceder a construir el algoritmo teniendo en cuenta al 1º Conjunto Desordenado o al 2º.
Luego de haber realizado dicho algoritmo transformarlo en un programa de computadora
eligiendo algún lenguaje de programación: Ada, Basic, C, C++, Go, Java, Julia,
Modula-3, Oberon-2, Pascal, Perl, PHP, Python, R, REXX, Smalltalk, SQL, Tcl,
Vala y otros más.
2º Caso:
Mezclar los elementos de un vector numérico ordenados de menor a mayor o viceversa.
Aunque no es un requisito necesario que el vector numérico esté ordenado también puede estar desordenado para hacer 'más desorden' en el mismo vector.
Usar el algoritmo "Mezcla de naipes Fisher-Yates".
Referencias:
- es.wikipedia.org/wiki/Algoritmo_de_Fisher-Yates
- en.wikipedia.org/wiki/Fisher-Yates_shuffle
- bost.ocks.org/mike/shuffle/
![]() |
| Desordenar un vector numérico. |
domingo, 16 de febrero de 2020
viernes, 13 de diciembre de 2019
viernes, 29 de noviembre de 2019
Suscribirse a:
Entradas (Atom)





