Título: Orderar Matriz utilizando CopyMemory en un solo bucle? Publicado por: LeandroA en 15 Noviembre 2008, 17:54 pm Buenas intento ordenar una matriz alfabeticamente a medida se se van agregando datos a esta, pero no me esta resultando, la idea seria....
(por ejemplo) si el dato ingresado es menor al tercer elemento copie desde el tercer al final en la posicion 4 de la matriz y en la posicion numero 3 ponga los nuevos datos. pero sin tener que recorrer un bucle, sino mas bien utilzando CopyMemory para hacelerar la funcion. se que podria poner dos bucles y ordenarlo de la forma tradicional pero esto se haria muy lento si ablamos de 10000 elementos pongo un ejemplo de lo que intento hacer, pero bien no estoy haciendo buen uso de CopyMemory Código: Option Explicit si alguien sabe como solucionar esto o conoce alguna otra forma se los agradezco Saludos Título: Re: Orderar Matriz utilizando CopyMemory en un solo bucle? Publicado por: ~~ en 15 Noviembre 2008, 18:55 pm Citar copie desde el tercer al final en la posicion 4 de la matriz y en la posicion numero 3 ponga los nuevos datos. pero sin tener que recorrer un bucle, sino mas bien utilzando CopyMemory para acelerar la funcion. Una cosa, estás seguro de que internamente CopyMemory no es más que un bucle que va copiando bytes desde una posición hasta otra?? por que yo apostaría por que si, a lo mejor es más rápido que hacerlo en VB por la calidad del código pero vamos... El algoritmo para ordenar datos más rápido que yo conozco es quicksort: http://es.wikipedia.org/wiki/Quicksort Prueba con él a ver si te da buenos resultados Salu2 Título: Re: Orderar Matriz utilizando CopyMemory en un solo bucle? Publicado por: LeandroA en 15 Noviembre 2008, 20:48 pm Hola con lo de forma tradional me referia a Quicksort, pero me es muy lento a lo que pienso, porque si yo ingreso 10000 itens y cada ves que ingreso uno tengo que ordenarlo y despues imprimiro esto es una operacion tremenda ya que en el utlimo items estaria haciendo un bucle de 10000 * 10000 (creo)
a lo que yo apunto que no estoy seguro si es posible de esta forma, es mover todo el bloque entero de un saque, y no desplazando items por items. Saludos Título: Re: Orderar Matriz utilizando CopyMemory en un solo bucle? Publicado por: jackl007 en 15 Noviembre 2008, 21:10 pm que yo sepa el que dice leandro es el burbuja (Segun lo que posteaste)...
el Quicksort, es uno de los mas veloces (simples) Título: Re: Orderar Matriz utilizando CopyMemory en un solo bucle? Publicado por: cobein en 15 Noviembre 2008, 22:53 pm El problema del copymemory lo podes solucionar utilizando una coleccion en paralelo al array y guardando el indice del valor. De esa manera la que queda ordenada es la coleccion y esta apunta al indice en el array.
|