metodos de ordenacion de matrices
Hola amigos del foro.
Por favor alguien me podria pasar algun metodo de ordenacion de matrices(ordenacion en forma ascendente o descendente) La matris que quiero ordenar es bidimensional y debo ordenarla una ves que se hayan almacenado todos los datos en cada posicion de la matris donde todas las posiciones estan con datos y no existe ninguna vacia Agradesco de antemano su ayuda |
Pues tienes desde el básico "burbuja" hasta los sofisticados "Shell" o "Quick". Depende de lo que necesites:
¿Cuál es la dimensión de la matriz? (me refiero a lineal, bidimensional, tridimensional...) ¿Es posible que los datos estén casi ordenados a menudo o están desordenados casi siempre? ¿Se ordena cada vez que cambia un elemento o cuando ya se han introducido todos? ¿Es muy grande o tiene pocos elementos? ¿Hay huecos o todas las posiciones tienen datos a ordenar? ¿La memoria es lineal o está organizado como un árbol? |
Para conocer mas los metodos que nombra Ñuño, te recomiendo leer cualquier libro básico de programación (no de delphi, etc) y si quieres los códigos para Delphi de cada uno de ellos, un libro clasico de pascal.
|
Hay varios algoritmos para ordenar matrices:
Burbuja, inserción, mezcla, ordenación rápida (qsort), etc Este es el procedimiento qsort para ordenar un arreglo bidimensional (un vector de n elementos) Para una matríz vas a tener que hacer algunas modificaciones según que columna quieras usar para ordenar o si querés ordenar por filas. Para algo más detallado te convendría ver el sitio numerical recipes o alguno parecido Código Delphi [-] procedure qsort(var a: arr;prim,ult,sen1:integer); procedure quicksort(var a: arr; ilo, ihi: integer); var lo, hi, mid, t: integer; begin lo := ilo; hi := ihi; mid := a[(lo + hi) div 2]; repeat while a[lo] < mid do inc(lo); while a[hi] > mid do dec(hi); if lo <= hi then begin t := a[lo]; a[lo] := a[hi]; a[hi] := t; inc(lo); dec(hi); end; until lo > hi; if (hi > ilo) then quicksort(a, ilo, hi); if (lo < ihi) then quicksort(a, lo, ihi); end; begin quicksort(a, prim, ult); end; saludos |
La franja horaria es GMT +2. Ahora son las 22:37:09. |
Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi