desordenar un vector
quiero desordenar un vector, y no se como hacerlo. Existen varios algorismos para ordenar vectores... pero... hay alguno que los desordene?
Hola
me parece que lo que pide es desordenar un vector existente y no llenar uno con valores aleatorios.
Si es eso mira este codigo que desordena "array" y lo pone en "desordenado":
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
void main(void) {
int array[100];
int estalibre[100];
int desordenado[100];
int i,pos;
time_t t;
//semilla para el rand
srand((unsigned) time(&t));
//inicializacion de los arrays
for(i=0;i<100;i++) {
array[i]=i;
estalibre[i]=1;//1 -> libre, 0 -> ocupado
}
for(i=0;i<100;i++) {
pos=rand()%100;
//este bucle evita que dos elementos sean guardados en la misma posicion
while (estalibre[pos]==0)pos=rand()%100;
desordenado[pos]=array[i];
estalibre[pos]=0;
}
}
Un saludo
me parece que lo que pide es desordenar un vector existente y no llenar uno con valores aleatorios.
Si es eso mira este codigo que desordena "array" y lo pone en "desordenado":
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
void main(void) {
int array[100];
int estalibre[100];
int desordenado[100];
int i,pos;
time_t t;
//semilla para el rand
srand((unsigned) time(&t));
//inicializacion de los arrays
for(i=0;i<100;i++) {
array[i]=i;
estalibre[i]=1;//1 -> libre, 0 -> ocupado
}
for(i=0;i<100;i++) {
pos=rand()%100;
//este bucle evita que dos elementos sean guardados en la misma posicion
while (estalibre[pos]==0)pos=rand()%100;
desordenado[pos]=array[i];
estalibre[pos]=0;
}
}
Un saludo
oyee!una preguntaaa..
yo qiero hacr algo parecido pero en vez de ser un vector es una matriz! me podrias ayudar..
quiero desordenarlos.. q no se me repitan ninguno de ellos!
como hago? :(
yo qiero hacr algo parecido pero en vez de ser un vector es una matriz! me podrias ayudar..
quiero desordenarlos.. q no se me repitan ninguno de ellos!
como hago? :(
oyee!una preguntaaa..
yo qiero hacr algo parecido pero en vez de ser un vector es una matriz! me podrias ayudar..
quiero desordenarlos.. q no se me repitan ninguno de ellos!
como hago? :(
yo qiero hacr algo parecido pero en vez de ser un vector es una matriz! me podrias ayudar..
quiero desordenarlos.. q no se me repitan ninguno de ellos!
como hago? :(
si... de hecho lo que queria hacer era desordenar un vector existente... gracias a los dos!!!
Otra solución: Accedemos a una posición aleatoria del vector y guardamos su contenido en un vector auxiliar. Eliminamos esa posicion del vector inicial y disminuimos la variable que guarde el numero de elementos. Repetimos el proceso hasta que el vector inicial quede vacio.
Hacemos una copia del auxiliar al inicial y liberamos la memoria utilizada por el auxiliar.
ele = N_elementos;
for (i=0;i<N_elementos;i++){
n = rand()%ele;
AUX[i] = inicial[n];
for (j=n;j<ele-1;j++){
inicial[j] = inicial[j+1];
}
ele--;
}
falta hacer la copia i liberar la memoria
Hacemos una copia del auxiliar al inicial y liberamos la memoria utilizada por el auxiliar.
ele = N_elementos;
for (i=0;i<N_elementos;i++){
n = rand()%ele;
AUX[i] = inicial[n];
for (j=n;j<ele-1;j++){
inicial[j] = inicial[j+1];
}
ele--;
}
falta hacer la copia i liberar la memoria
