Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   Como saber cual es el múmero mayor de un array (https://www.clubdelphi.com/foros/showthread.php?t=9459)

guillotmarc 23-04-2004 20:21:31

http://www.delphimania.com.ar/Articulos/Arboles.htm
http://www.hci.uniovi.es/martinDocen...chTreePage.htm

Al González 24-04-2004 08:20:59

¡Hola a todos!


Respondo a la pregunta:
Cita:

Empezado por JDNA
...saber si en el delphi hay algún comando para poder saber que número es el mayor de una lista...

Entendiendo que dicha lista es un arreglo (por lo que dice el título del tema), si dicho arreglo es de enteros (Integer), se puede utilizar la función MaxIntValue; si es de flotantes de precisión doble (Double), se puede utilizar la función MaxValue; las dos funciones pertenecen a la unidad Math de Delphi.


Adicionalmente, buscando la palabra "Mayor" en la biblioteca Delphi Interfaz GH, encuentro algunas funciones de la unidad GHMatem.pas:
Código:

  { Entero Absoluto Mayor }
  Function EnterAbsoMayo (Const Enteros :Array Of Integer) :Integer;

  { Entero de Longitud Mayor }
  Function EnterLongMayo (Const Enteros :Array Of Integer) :Integer;

  { Entero Mayor }
  Function EnterMayo (Const Enteros :Array Of Integer) :Integer;

  { Número de Longitud Mayor }
  Function NumerLongMayo (Const Numeros :Array Of Extended) :Extended;

  { Número Mayor }
  Function NumerMayo (Const Numeros :Array Of Extended) :Extended;

EnterMayo es como MaxIntValue, pero con la ventaja de que puede recibir un arreglo vacío, en cuyo caso devuelve 0 (MaxIntValue asume que el arreglo tiene por lo menos un elemento).

NumerMayo es como MaxValue, pero en lugar de recibir un arreglo de valores Double recibe un arreglo de valores Extended (el tipo estándar de las constantes de punto flotante en Delphi), además de que dicho arreglo puede estar vacío, en cuyo caso devuelve 0 (MaxValue asume que el arreglo tiene por lo menos un elemento).

Les invito a que conozcan esta biblioteca de funciones. En ella encontrarán muchas funciones con las cuales solucionar facilmente cientos de problemas comunes relacionados con números, arreglos, cadenas de caracteres, punteros, memoria, objetos, gramática, etc.

Espero esto sea de utilidad. Seguimos en contacto.

Al González :).

guillotmarc 24-04-2004 18:25:10

Hola.

Sin ninguna duda está función recorre toda la matriz, que es lo que se quería evitar.

Saludos.

roman 25-04-2004 02:14:14

Cita:

Empezado por guillotmarc
que es lo que se quería evitar.

y que no se puede evitar. A menos claro que la lista se mantenga ordenada como indicaste anteriormente con, por ejemplo, un árbol binario; aunque esto solo vale dependiendo de como se obtengan los números, porque si llegan de un solo golpe será más eficiente el recorrido secuencial que el previo ordenamiento.

// Saludos

Julià T. 25-04-2004 04:31:51

también se puede descartar la opción de controlar el máximo con una variable del mismo tipo que el del array cada vez que se entre un nuevo valor al array, ya que funcionaría bién hasta que se elimine el máximo del array con lo que se tendría que "recorrer" el array para buscar el máximo de nuevo.

roman 25-04-2004 06:49:28

Cita:

Empezado por Julià T.
funcionaría bién hasta que se elimine el máximo del array con lo que se tendría que "recorrer" el array para buscar el máximo de nuevo.

Sí, tienes razón. No había pensado en la posibilidad de que se quiten elementos del arreglo. Claro que en realidad poco sabemos de la forma en que lleguen (o se vayan) los números pues no lo aclaró quien originalmente hizo la pregunta.

// Saludos

maruenda 25-04-2004 22:04:47

hola a tod@s. Bueno, yo pienso que si el numero de elementos es pequeño, se recorre uno a uno ( no hay otra forma ), y se busca el mayor. Si el numero es elevado , y hay que hacer varias busquedas en momentos distintos, Y ademas con la opcion de insertar y eliminar elementos, recomiendo los arboles binarios. Cualquier otra solucion, seria perder mucho tiempo. Aunque la primero ordenacion, al crear el arbol, lleve tiempo, luego las inserciones, borrados, y balanceo del arbol, hacen que las busquedas sean mas rapidas. un saludo. :cool:

por cierto, ya hace calor, asi que todos a la playaaaaaa......


La franja horaria es GMT +2. Ahora son las 11:16:31.

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