Zona HTML Zona Java Zona PHP Zona ASP Zona Bases de datos
Inicio > Foros > C / C++ > desordenar un vector
-Foros de debate

C / C++
Lista de foros | Lista de mensajes de este foro

Privacidad: Recuerde que la información escrita en los foros de programación es 100% pública y que su ip será registrada asociada a su mensaje. Si encuentra un mensaje fuera de lugar, por favor, notifiquelo para su revisión y eliminación.

desordenar un vector
Enviado por eing el día 3 de diciembre de 2003

quiero desordenar un vector, y no se como hacerlo. Existen varios algorismos para ordenar vectores... pero... hay alguno que los desordene?

 
Re: desordenar un vector
Enviado por arioch el día 3 de diciembre de 2003

for(int i=0; i<tam_vector; i++)
vector[i]=rand()%100;

Te vale eso ?

 
Re: Re: desordenar un vector
Enviado por josuth el día 3 de diciembre de 2003

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

 
desordenar un vector
Enviado por eing el día 4 de diciembre de 2003

si... de hecho lo que queria hacer era desordenar un vector existente... gracias a los dos!!!

 
Re: desordenar un vector
Enviado por kitik_ el día 4 de diciembre de 2003

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

 
Re: Re: desordenar un vector
Enviado por danjiun el día 11 de diciembre de 2003

Hola.
Justamente estaba pensando en el mismo tema,
y estaba buscando lo mas optimo.
Leyendo lo vuestro y algo antes, se me ocurre algo mejor para la velocidad que lo ultimo. Ya que ya no importa el orden en lo desordenado, no hace falta bajar a todos los elementos superiores a n en una posicion, simplemente poned el ultimo elemento en la posicion, y ya esta :
ele = N_elementos;
for (i=0;i<N_elementos;i++){
n = rand()%ele;
AUX[i] = inicial[n];
inicial[n] = inicial[ele-1];//la linea unica
ele--;
}

Un saludo. No se si pasare por aqui, es casualidad que me paso por el foro desde el Google.
Chao. Daniel.

 



Re: Re: Re: desordenar un vector
Enviado por JuanJoO el día 20 de abril de 2008

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? :(

 

Re: Re: Re: desordenar un vector
Enviado por JuanJoO el día 28 de abril de 2008

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? :(

 




Tienda
Patrocinados
 

Copyright © 1999-2006 Programación en castellano. Todos los derechos reservados.
Formulario de Contacto - Datos legales - Publicidad

Hospedaje web y servidores dedicados linux por Ferca Network