![]() |
metodo de ordenacion
Quisiera saber si delphi 2009 tiene alguna funcion o propiedad asi como sort para ordenar los numeros que balla introduciendo en un listbox .
si en la propiedad sorted del litsbox la activo y me ordena alfabeicamente y yo lo que quisiera saber como le hago para que ordene numericamente. |
Que yo sepa no hay un método así para los TStrings (los items de los TListBox son del tipo TStrings).
Lo único que te puedo recomendar es este procedimiento que acabo de hacer para tu pregunta: Solamente ordena números. Si tu TListBox contiene palabras, va a tirar error. Le mandás como primer argumento el TListBox que quieras ordenar (ListBox1, ListaNumeros, como se llame) y como segundo argumento le mandás TRUE si querés que los ordene de menor a mayor (ascendente) o FALSE si querés que los ordene de mayor a menor (descendente). Saludos! |
gracias colega un poco dificil para mi que son principiante todabia pero si logro entenderle . .
buscaba algo mas facil asi como el metodo de la burbuja ... |
Cita:
Si son pocos números y el tema de velocidad no es muy importante, a veces he utilizado un TStringList a modo de intermediario. (0) Desactivar el orden del ListBox. (1) Copias todos los números al TSttingList pero formateandolos como cadenas con ceros a la izquierda; 00001, 00023, 00167,... (2) Mandas ordenar ese StringList, que en este caso los ordena como cadenas, pero con la ordenación numérica correcta. (3) Un for que los vuelve a copiar al ListBox convirtiéndolos a números. Ya se no, es nada "sofisticado" pero para 1000, 5000,... números es inmediato.
|
Cita:
Tampoco hice lo que explicó Neftali porque no quise confundirte con los TStringList que son otro tipo de datos, como los TStrings, pero mejores (opinión mía). El método que te expliqué se llama de intercambio y es el más simple. Además, Neftali, no entiendo por que esto: Primero, no sabía que se podía ubicar un string en una lista así (TS[i]), pensé que se podía solamente con TS.Strings[i]. Segundo, para que almacenar ese string en un integer, para después copiarlo como string de nuevo. Es un paso en vano. ¿No sería mejor ListBox1.Items.Add(TS.Strings[i])? Saludos!! |
Se me hace mas entendible el metodo de intercambio de BrunoBsso
ya que el otro se me iso muy complicado.. ya que soy novato en delphi pero si les entiendo a alos metodos que pusieron gracias amigos.. |
Cita:
Mejor 2 que 1 ¿no? :D:D Si tienes algunas duda pregunta sin problemas. Cita:
Cita:
Como bien dices esto:
es equivalente a esto:
Aunque en realidad lo más simple y lo que yo hubiera hecho, hubiera sido esto (sin usar for):
Pero me pareció más simple. Tal vez al final lié la cosa... :D |
Mirá vos, después de tanto manejar TStringList me vengo a enterar recién que se pueden ubicar con T[i].
Siempre se aprende algo nuevo, ¿no? Mucho mejor, más rápido que escribir T.Strings[i] :D Saludos y gracias por el tip!!!! |
Cita:
BubbleSort no es recursivo, es iterativo. Es uno de los algoritmos más estable y se basa en el método por intercambio. El que es recursivo, e intuyo que es al que te refieres, es QuikSort (uno de los inestables), el cual si bien tiene la ventaja de tener una complejidad computacional menor (en términos promedios, en el peor caso iguala al Burbuja y otros) que el Burbuja tiene la contra de requerir más uso de memoria (aunque hay que reconocer que no es además muy exagerada... del orden O(log n)) y su método es de partición. Saludos, |
Tenés razón, me los confundí entre los 2.
Hace tanto que no uso ninguno que ya ni me acuerdo como se llaman jajaja. Gracias por la corrección! |
Cita:
// Saludos |
Cita:
Y ese sería aun mejor que el comentado antes. La verdad es que es de esas cosas que sabes que están ahí, pero que nunca usas. Es mi caso, no lo he usado nunca y en este caso simplificaría las cosas. |
La franja horaria es GMT +2. Ahora son las 12:51:55. |
Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi