Foros del Web » Programando para Internet » ASP Clásico »

ideas para una funcion de ordenar de menor a mayor n terminos

Estas en el tema de ideas para una funcion de ordenar de menor a mayor n terminos en el foro de ASP Clásico en Foros del Web. Hola amigos... la verdad de las cosas es que estoy abstante complicado, le cuento... tengo que hacer una funcion qeu oredene de menor a mayor ...
  #1 (permalink)  
Antiguo 25/10/2005, 14:20
Avatar de El_Metallick  
Fecha de Ingreso: noviembre-2002
Ubicación: Santiago, Chile
Mensajes: 1.718
Antigüedad: 21 años, 7 meses
Puntos: 16
ideas para una funcion de ordenar de menor a mayor n terminos

Hola amigos... la verdad de las cosas es que estoy abstante complicado, le cuento... tengo que hacer una funcion qeu oredene de menor a mayor N terminos extraidos de distintos lugarles y no se como hacerlo... si alguien me puede dar alguna idea... bueno eso saludos y gracias de antemano
__________________
Haz la guerra en la cama y el amor donde se te de la gana...
El tiempo es el mejor maestro, lo único malo es que te mata...¡¡Aprovecha tu tiempo!!
  #2 (permalink)  
Antiguo 25/10/2005, 14:38
 
Fecha de Ingreso: marzo-2005
Mensajes: 1.418
Antigüedad: 19 años, 2 meses
Puntos: 9
Function SortArray(arreglo)
For j=UBound(arreglo) to 0 step - 1
For i=0 to UBound(arreglo) - 1
elemento = arreglo(i)
elementoMasUno = arreglo(i + 1)
if arreglo(i) > arreglo(i + 1) then
aux = arreglo(i)
arreglo(i) = arreglo(i + 1)
arreglo(i + 1) = aux
end if
next
next
SortArray = arreglo
End function

Este se llama el método de la burbuja, te ordena de menor a mayor los elementos que tenés en un array. Lo que sí, es extremadamente lento. Con mil elementos en el array hasta en local te demora un par de segundos.
Podés averiguar por el algoritmo QuickSort, que si bien es más complejo de entender, es mucho más eficaz que este.
Espero que te sirva!.
Suerte!.
__________________
Add, never Remove
  #3 (permalink)  
Antiguo 25/10/2005, 15:03
Avatar de El_Metallick  
Fecha de Ingreso: noviembre-2002
Ubicación: Santiago, Chile
Mensajes: 1.718
Antigüedad: 21 años, 7 meses
Puntos: 16
claro pero es solo para una de las fuentes de las que pueden provenir los datos... tambien pueden venir de varibles sueltas... o de archivos de texto... pero = se agradece la funcion... saludos
__________________
Haz la guerra en la cama y el amor donde se te de la gana...
El tiempo es el mejor maestro, lo único malo es que te mata...¡¡Aprovecha tu tiempo!!
  #4 (permalink)  
Antiguo 26/10/2005, 06:43
 
Fecha de Ingreso: junio-2005
Mensajes: 114
Antigüedad: 19 años
Puntos: 0
Podrias hacer un insert (desde todos los orígenes que decís que pueden provenir loos datos) en un archivo temporal , y despues hacer un

select * from tabla_temporal order by campo_XXX

Eso si, no olvides borrar la tabla todas las veces.
Slds. Edum
  #5 (permalink)  
Antiguo 26/10/2005, 06:44
 
Fecha de Ingreso: junio-2005
Mensajes: 114
Antigüedad: 19 años
Puntos: 0
no lo dije, pero se supone que el archivo temporal es la tabla de alguna base de datos que estés usando (o al menos de un access que lo unico que tenga es tu tabla temporal )
  #6 (permalink)  
Antiguo 26/10/2005, 08:26
Avatar de u_goldman
Moderador
 
Fecha de Ingreso: enero-2002
Mensajes: 8.031
Antigüedad: 22 años, 5 meses
Puntos: 98
Me parece que aunado a lo que ya te han aconsejado, lo importante es definir que estructura de datos es la que quieres ordenar, no es lo mismo ordenar un arreglo, que una tabla por ejemplo, entiendo el concepto de enviar parametros de donde sea a una funcion para que los ordene, pero esa funcion necesitara recibir dichos parametros en un formato establecido.

Salu2,
__________________
"El hombre que ha empezado a vivir seriamente por dentro, empieza a vivir más sencillamente por fuera."
-- Ernest Hemingway
  #7 (permalink)  
Antiguo 26/10/2005, 09:59
Avatar de AlZuwaga
Colaborador
 
Fecha de Ingreso: febrero-2001
Ubicación: 34.517 S, 58.500 O
Mensajes: 14.550
Antigüedad: 23 años, 3 meses
Puntos: 535
Cita:
Iniciado por edumferreyra
no lo dije, pero se supone que el archivo temporal es la tabla de alguna base de datos que estés usando (o al menos de un access que lo unico que tenga es tu tabla temporal )
Y agrego que ni siquiera hace falta crear un tabla temporal sino que lo podrías almacenar en un recordset "volátil" (por llamarlo de alguna manera). Después si me acuerdo pongo un ejemplo
__________________
...___...
  #8 (permalink)  
Antiguo 26/10/2005, 10:48
Avatar de AlZuwaga
Colaborador
 
Fecha de Ingreso: febrero-2001
Ubicación: 34.517 S, 58.500 O
Mensajes: 14.550
Antigüedad: 23 años, 3 meses
Puntos: 535
Bueno, el ejemplo. Puede tener errores porque lo tuve que editar para quitarle HTML innecesario, pero es la idea:

Código:
<%
CONST adFldIsNullable = &H00000020
CONST adVarChar = 200
CONST adInteger = 3
CONST adDate = 7
CONST adOpenDynamic = 2
CONST adUseClient = 3

Set FSO = Server.CreateObject("Scripting.FileSystemObject")
Set folder = fso.getFolder(Server.MapPath("carpeta"))

Set rs = Server.CreateObject("ADODB.Recordset")

With rs
	.CursorLocation = adUseClient
	.CursorType = adOpenDynamic
	.Fields.Append "Nombre", adVarChar, 255, adFldIsNullable
	.Fields.Append "Extension", adVarChar, 255, adFldIsNullable
	.Fields.Append "Peso", adInteger, 255, adFldIsNullable
	.Fields.Append "Modificado", adDate, 32, adFldIsNullable
	.Fields.Append "RutaArchivo", adVarChar, 255, adFldIsNullable
	.open

	for each file in folder.Files
		Archivo = file.Name
		arrArchivo = Split(Archivo, ".")
		Extension = arrArchivo(UBound(arrArchivo))
		Peso = file.Size
		.AddNew
		.Fields("Nombre") = file.Name
		.Fields("Extension") = Extension
		.Fields("Peso") = Peso
		.Fields("Modificado") = file.dateLastModified
		.Fields("RutaArchivo") = file.Path
		.update
	next

	Orden = Request.QueryString("Orden")
	Select CASE Orden
		Case "" OrdenarPor = "Nombre ASC"
		Case "NomA" OrdenarPor = "Nombre ASC"
		Case "NomD" OrdenarPor = "Nombre DESC"
		Case "TamA" OrdenarPor = "Peso ASC"
		Case "TamD" OrdenarPor = "Peso DESC"
		Case "ExtA" OrdenarPor = "Extension ASC"
		Case "ExtD" OrdenarPor = "Extension DESC"
		Case "ModA" OrdenarPor = "Modificado ASC"
		Case "ModD" OrdenarPor = "Modificado DESC"
		Case Else OrdenarPor = "Nombre ASC"
	End Select

		.Sort = OrdenarPor
		.MoveFirst

		do while not .eof
' acá recorrés el recordset volátil y creás el html necesario....
		.Movenext
		loop
		.close
End With
Set rs = nothing
Set folder = nothing 
Set fso = nothing
%>
Lo que hago es leer los archivos de una carpeta y colocar en un récordset cada atributo de estos, para poder ordenarlos de manera más fáciil que por el método de la burbuja (y más efectivo, puesto que ese algoritmo o método siempre ordena de manera textual, fechas incluidas)
__________________
...___...
  #9 (permalink)  
Antiguo 26/10/2005, 10:57
Avatar de u_goldman
Moderador
 
Fecha de Ingreso: enero-2002
Mensajes: 8.031
Antigüedad: 22 años, 5 meses
Puntos: 98
Ay mama!
Yo no sabia que se podia hacer esto

Gracias, me acabas de sacar de un aprieto
__________________
"El hombre que ha empezado a vivir seriamente por dentro, empieza a vivir más sencillamente por fuera."
-- Ernest Hemingway
  #10 (permalink)  
Antiguo 26/10/2005, 11:24
Avatar de AlZuwaga
Colaborador
 
Fecha de Ingreso: febrero-2001
Ubicación: 34.517 S, 58.500 O
Mensajes: 14.550
Antigüedad: 23 años, 3 meses
Puntos: 535
Je, yo tampoco sabía que se podía hasta antes de febrero de 2005. Recuerdo que fue esa fecha porque en febrero tenemos poco (o nada) de trabajo y me puse a mejorar el arministrador de archivos remoto que había hecho hace muuuucho tiempo atrás (igual nunca terminé las mejoras ).
De allí fue que me puse a investigar cómo ordenar los archivos y llegué a ese script.

Y qué bueno que te sirva!
Saludos
__________________
...___...
  #11 (permalink)  
Antiguo 26/10/2005, 18:11
Avatar de El_Metallick  
Fecha de Ingreso: noviembre-2002
Ubicación: Santiago, Chile
Mensajes: 1.718
Antigüedad: 21 años, 7 meses
Puntos: 16
bueno maestros uan vez mas me sacaron del aprieto... muchisimas gracias... jajajjaja de hecho me dieron mas de lo que pedi... queria ideas y me dieron ejemplos ^^. Bueno nada que decir mas que reiterar mi agradecimiento... saludos
__________________
Haz la guerra en la cama y el amor donde se te de la gana...
El tiempo es el mejor maestro, lo único malo es que te mata...¡¡Aprovecha tu tiempo!!
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 16:37.