FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Temas de Hoy |
|
Herramientas | Buscar en Tema | Desplegado |
#1
|
|||
|
|||
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 Última edición por rls fecha: 20-09-2006 a las 02:16:59. |
#2
|
||||
|
||||
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? |
#3
|
||||
|
||||
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.
__________________
[Crandel] |
#4
|
|||
|
|||
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 |
|
|
Temas Similares | ||||
Tema | Autor | Foro | Respuestas | Último mensaje |
funciones y matrices | anto1178 | Varios | 1 | 28-08-2006 17:29:31 |
Matrices | sergio_015 | OOP | 3 | 09-03-2005 19:53:07 |
Matrices | mmtaffarel | OOP | 2 | 15-10-2004 03:19:27 |
Matrices dinámicas | jplj | Varios | 2 | 30-08-2004 08:57:38 |
Matrices - problemas..... | arieleb | Varios | 1 | 21-09-2003 12:30:35 |
|