Random Sort

Publicado en Blog

//De Jos, un algoritmo que desde hace rato queria hacer
//No es el mas eficiente, pero si el mas sin sentido…

/*”Un solo Shakespeare con pluma, tinta y papel jamás igualará la producción de infinitos monos con infinitos procesadores de texto.”*/

//Son estas las librerias para consolar
#include<iostream.h> //las que van de entrada por salida
#include<stdlib.h> //las europeas estandar

//librerias para el azar
#include<time.h> //el que es dinero.
#define randomize()(srand(time(0))) //aleatorizar
#define random(x)(rand()% x) //equis cantidad

int cantidad = 10; //aquellos dispuestos a ser ordenados
int *num = new int[cantidad]; //con cada new, un gatito muere
void swap(); //la denominada funcion del suapeo
int azar1; //azar1, que bien pudo haberse llamado azar27
int azar2; //como el de arriba pero totalmente distinto
int azar1anterior; //para guardar su recuerdo
int azar2anterior; //para seguir la costumbre

/*recorre el desbarajuste para corroborar que se hizo lo que se tenia que hacer*/
void imprimir()
{
for (int x=0; x<cantidad; x++)
{
cout << num[x] << ” “; //equis del desbarajuste saliendo a relucir
}
}

void llenar() //puros inventos
{
int azaroso; //el desdichado mutante

randomize(); //agarra una fichita y la menea bien sabroso
for (int x=0; x<cantidad; x++)
{
azaroso = random(cantidad); //le mete al azaroso un revoltoso
num[x] = azaroso; //y al desbarajuste lo que salio
}

}

void ordenar() //para poner orden
{
int flag=1; //semaforo en siga

while(flag!=0) //mientras que no se ponga en rojo el susodicho
{
flag = 0; //stoooop

for(int a=0; a<cantidad-1; a++)
{
if(num[a]>num[a+1]) //si es desbarajuste esta desbarajustado
{
flag=1; //lo ponemos en verde
}
}

if(flag==1) //si nos pasamos un alto… pero no.
{
/*llamamos a intercambiar quien sabe que por quien sabe cual*/
swap();
}
}

}

void swap() //esta es la que switchea el embrollo
{
int temp; //temporizador de tiempo espacio
int tempazar1; //como el de arriba pero mas chido
int tempazar2; //y en pasado

/*guardamos al azar27 en el que es como el de mas arriba pero mas chido*/
tempazar1 = azar1;

//si esta mas repetido que el pasado…
while(tempazar1==azar1 || azar1 == azar2anterior)
{
azar1 = random(cantidad); //agarrate uno nuevecito de paquete
}

tempazar2 = azar2; //lo mismo pero mas barato

while(azar2==azar1 || azar2 == azar1anterior) //2×1
{
azar2 = random(cantidad); //4×3
}

temp = num[azar1]; //aqui esta el mero swapeo
num[azar1] = num[azar2]; //el mero merengal
num[azar2] = temp; //de los switcheos

azar1anterior = azar1; //aqui nomas guardando el pasado
azar2anterior = azar2; //para futuras generaciones
}

void main() //principio y fin del universo
{
azar1=0; //inicializacion de los desbarajustadores
azar2=1; //0, 1, 2, 3
azar1anterior=2; //o sea que el desbarajuste solo jala dea4
azar2anterior=3; //para arriba

llenar(); //quien lo manda al relleno
ordenar(); //quien lo manda a la ordenación ordenamentada

imprimir(); //pa visualizar

delete [] num; //y para no llenar de quien sabe que
num = NULL; //y de quien sabe como…
}

Sobre el autor

Jos Velasco es desarrollador web y participa en múltiples proyectos culturales. Contáctalo.

Sigue a Jos