Viernes 15 de Noviembre de 2024, 13:50
SoloCodigo
Bienvenido(a),
Visitante
. Por favor,
ingresa
o
regístrate
.
¿Perdiste tu
email de activación?
Inicio
Foros
Chat
Ayuda
Buscar
Ingresar
Registrarse
SoloCodigo
»
Foros
»
Programación General
»
C/C++
(Moderador:
Eternal Idol
) »
Quicksort
« anterior
próximo »
Imprimir
Páginas: [
1
]
Autor
Tema: Quicksort (Leído 5572 veces)
pyro
Nuevo Miembro
Mensajes: 17
Quicksort
«
en:
Martes 8 de Junio de 2004, 07:35 »
0
Hola, yo entiendo el algoritmo de este ordenamiento... y lo he analizado.. pero no estoy pudiendo implementarlo para poder utilizarlo con una matriz de orden n*m...
Este seria el quicksort para un vector unidimensional.. como puedo hacer para implementarlo a un vector con mas dimesiones??
por ejemplo
sea mi matriz [1,2,3]
[4,5,6]
[7,8,9]
y ordenarlo por filas.. y por columnas en forma ascendente o descendiente.. como puedo hacerlo? sin que pase estos datos a un vector.. y luego paso el vector a la matriz de nuevo..
void qsort(int m, int n, int v[])
{
int i, j, k,t ;
static int nivel=0;
if (m<n)
{
i = m;
j = n+1;
k = v[m];
while(1)
{
do {i++;}while (v
<k);
do {j--;}while (v[j]>k);
if (i<j)
{
t=v
;
v
=v[j];
v[j]=t;
}
else
break;
}
t=v[j];
v[j]=v[m];
v[m]=t; nivel++;
qsort(m,j-1,v);
qsort(j+1,n,v);
}
}
Tweet
JuanK
Miembro de ORO
Mensajes: 5393
Nacionalidad:
Re: Quicksort
«
Respuesta #1 en:
Martes 8 de Junio de 2004, 20:10 »
0
eso depende de lo que quieras hacer.. trata de ser ma claro..
es decir si lo que quieres-?
- ordenar cada fila de la matrix por aparte
- ordenar toda la matriz como si fuera un unico vector
- ordenar horizontalmente y luego verticalmente conn un criterio determinado
- otras?
[size=109]Juan Carlos Ruiz Pacheco
[/size]
Microsoft Technical Evangelist
@JuanKRuiz
http://juank.io
pyro
Nuevo Miembro
Mensajes: 17
Re: Quicksort
«
Respuesta #2 en:
Miércoles 9 de Junio de 2004, 03:43 »
0
En realidad ordenar toda la matriz..
por ejemplo si tengo
[2,8,5]
[9,1,6]
[10,15,4]
Ordenarlo por filas seria
[1,2,4]
[5,6,8]
[9,10,15]
y por columnas
[1,5,9]
[2,6,10]
[4,8,15]
seria algo asi.. no se me ocurre como hacerlo..
JuanK
Miembro de ORO
Mensajes: 5393
Nacionalidad:
Re: Quicksort
«
Respuesta #3 en:
Miércoles 9 de Junio de 2004, 06:31 »
0
solo necesiats copiarla matriz en un vector segun tus necesidads , lo rodenas y luego lo devuelves a la matriz y listo.
[size=109]Juan Carlos Ruiz Pacheco
[/size]
Microsoft Technical Evangelist
@JuanKRuiz
http://juank.io
Noel Solw
Miembro activo
Mensajes: 81
Re: Quicksort
«
Respuesta #4 en:
Miércoles 9 de Junio de 2004, 09:26 »
0
Otra forma de solucionar el problema :
tenemos una matriz int a[N][N]
[a] - para ordenar por filas creamos una funcion que ordena un array de int de dimension N*N
void SortByRows(int *a)
{
ordenar el array N*N por el metodo requerido
}
llamada a la funcion SortByRows(&a[0][0]);
- ordenar por columnas es un poco mas complicado, pero podemos aprovechar
el resultado anterior y construir la matriz transpuesta del ordenamiento por filas.
SortByColumns = transpuesta de a[N][N]
for(int i = 0;i < N;i++)
for(int j = 0;j < i;j++)
intercambiar los valores de a
[j] y a[j]
);
exito ! ! !
Nota : una matriz b es transpuesta de otra matriz a, si todas la columnas de a son
filas de b y todas las filas de a son columnas de b.
Por supuesto si b = transp(a), tambien a = transp(
.
pyro
Nuevo Miembro
Mensajes: 17
Re: Quicksort
«
Respuesta #5 en:
Miércoles 9 de Junio de 2004, 15:44 »
0
Hola Gracias JuanK y Noel, mi problema no estaba en hallar la transpuesta sino mas bien.. en como puedo transformar el quicksort de modo a que se adapte para vectores no bidimensionales... pero igual.. muchas gracias por su ayuda..
Noel Solw
Miembro activo
Mensajes: 81
Re: Quicksort
«
Respuesta #6 en:
Jueves 10 de Junio de 2004, 21:34 »
0
Estimado Pyro : que es lo que quieres ?
Has recibido respuestas de acuerdo a tus preguntas y al ejemplo de input-output
que presentates, y te aseguro que el procedimiento con la "transpuesta" hace exactamente lo que escribistes.
Empezemos de nuevo :
[a] : di exactamente que quieres hacer, cual es tu input y cual es tu output.
: presenta un ejemplo claro y detallado.
No tartes de volvernos locos, que ya lo somos por merito propio.
pyro
Nuevo Miembro
Mensajes: 17
Re: Quicksort
«
Respuesta #7 en:
Viernes 11 de Junio de 2004, 03:40 »
0
Hola yo de nuevo
Mmm a ver si esta vez me explico mejor....
Quiero implementar el quicksort para matrices de elementos FILAS*COLUMNAS... ordenando primero por columnas y luego por filas...
Orden por columnas... m[0][0], m[1][0], m[2][0]........ m[0][1], m[1][1]... y asi... siguiendo... por ejemplo
[10][24][14]
[18][11][ 9]
[ 8][20][34]
y si lo ordeno por columnas...
[ 8][11][20]
[ 9][14][24]
[10][18][34]... y luego hago la transpuesta y tengo la matriz ordenada por filas...
ahora bien... no tengo la menor idea de como implementar el quicksort.. sin tirar fila por fila o colmna por columna a un vector....
Noel Solw
Miembro activo
Mensajes: 81
Re: Quicksort
«
Respuesta #8 en:
Lunes 14 de Junio de 2004, 09:52 »
0
Me parece que el ultimo tejemplo que enviastes rengea un poco.
Te mando una propuesta, que me creo adecuada a lo que necesitas.
Fijate que cuando ordenas la misma matriz dos veces, una vez segun las lineas y la otra de acuerdo a las columnas, obtienes una matriz que esta ordenada como si en realidad fuera un array lineal.
Yo no use Qsort, pero no es un gran problema hacer el cambio.
El mensaje contiene
1 archivo adjunto
. Debes
ingresar
o
registrarte
para poder verlo y descargarlo.
pyro
Nuevo Miembro
Mensajes: 17
Re: Quicksort
«
Respuesta #9 en:
Martes 15 de Junio de 2004, 03:30 »
0
Creo que mi idea no esta llegando muy bien.. tu programa esta bien.. solo que el ordenamiento debe de ser con todos los elementos...
por ejemplo tu matriz es:
{2,8,5}
{9,1,6}
{10,15,4}
y el ordenamiento por filas serias...
{1,2,4}
{5,6,8}
{9,10,15}...
y el orden por columnas..
{1,5,9}
{2,6,10}
{4,8,15}... no se si me estoy explicando bien
El ordenamiento debe ser de todos los elementos.. como si fuese un vector unidimensional.. pero sin tomarlo como tal... me explico
Noel Solw
Miembro activo
Mensajes: 81
Re: Quicksort
«
Respuesta #10 en:
Jueves 17 de Junio de 2004, 17:24 »
0
Me llevo tiempo, pero creo hacer entendido lo que quieres.
Tienes que cambiar a ordenamiento Qsort.
Cuentame como te fue.
El mensaje contiene
1 archivo adjunto
. Debes
ingresar
o
registrarte
para poder verlo y descargarlo.
pyro
Nuevo Miembro
Mensajes: 17
Re: Quicksort
«
Respuesta #11 en:
Sábado 19 de Junio de 2004, 21:25 »
0
Hola estuve biendo el codigo.. y probando paso a paso.. y sip es lo que estaba queirendo hacer, ahora... creo que para pasarlo a qsort es casi lo mismo, solo unos pequeños cambios para ver los limites de ordenacion.. o me estoy equivocando?
voy a seguir con el codigo este fin de semana y luego te lo paso
pyro
Nuevo Miembro
Mensajes: 17
Re: Quicksort
«
Respuesta #12 en:
Martes 22 de Junio de 2004, 03:14 »
0
Creo que ya esta.. muchas gracias a todos por su ayuda...
gracias
Imprimir
Páginas: [
1
]
« anterior
próximo »
SoloCodigo
»
Foros
»
Programación General
»
C/C++
(Moderador:
Eternal Idol
) »
Quicksort