UTNianos

Versión completa: [ALGORITMOS] Ordenar lista por otro campo
Actualmente estas viendo una versión simplificada de nuestro contenido. Ver la versión completa con el formato correcto.
Páginas: 1 2
igualmente, la memoria dinámica generalmente se restringe por cantidad de Bytes en un nodo, no por cantidad de nodo (a menos que tengas un profe medio malo, porque eso no lo vi ni en los finales =P
Slds
Aye escribió:igualmente, la memoria dinámica generalmente se restringe por cantidad de Bytes en un nodo, no por cantidad de nodo (a menos que tengas un profe medio malo, porque eso no lo vi ni en los finales =P
Slds

En mi época te restringían por cantidad de nodos, cantidad de bytes totales y tamaño de nodos =P Siempre terminabas teniendo que hacer matrices + listas de listas + algun vector que tenga una posición y un Codigo referido a las filas y otro a las columnas de la matriz.
lo que pasa es que no se como ir comparando de a dos nodos, porque en un vector es facil pero en una lista tenes q tener cuidado de como conectas los nodos porque podes perder toda la informacion o gran parte.
oiga escribió:lo que pasa es que no se como ir comparando de a dos nodos, porque en un vector es facil pero en una lista tenes q tener cuidado de como conectas los nodos porque podes perder toda la informacion o gran parte.

Sí obvio, tenés que tener cuidado, pero haciendo pruebas de casos en una hoja le vas agarrando la mano.

En sí, si estás parado en el nodo que apunta Ptr, hacés lo siguiente:


Ptr := Lista;
While Ptr <> NIL Do
If PrimeraVez Then
If Ptr^.sgte <> NIL Then
Begin
If (Ptr^.sgte^.Nota < Ptr^.Nota) Then
Begin
Aux := Ptr^.Nota;
Ptr^.Nota := Ptr^.sgte^.Nota;
Ptr^.sgte^.Nota := Aux;
End;
Else
{llegaste al final la primera vez}
End;
Cantidad := Cantidad + 1;
Ptr = Ptr^.sgte;
End;
End;


{se ponía -1, pero ya lo leí la 1º vez}
For I := 1 To Cantidad - 2 Do
Begin
For J := Cantidad DownTo I DO
Begin
If (Ptr^.sgte^.Nota < Ptr^.Nota) Then
Begin
Aux := Ptr^.Nota;
Ptr^.Nota := Ptr^.sgte^.Nota;
Ptr^.sgte^.Nota := Aux;
End;
Contador := Contador + 1;
Ptr = Ptr^.sgte;
End;
{ordeno desde la primera posición de nuevo,
pero un elemento menos que antes, así es el burbujeo}
Ptr := Lista;
End;




Ahí adapté más o menos el BubbleSort a las listas. No está optimizado ni mucho menos, pero es para mostrar una idea (tampoco sé si funciona bien, pero poderse hacer bien se puede). Lo que hace es primero recorrer y ordenar la primera tanda y de paso tomar la cantidad de elementos. Después vuelve a recorrer reduciendo la cantidad recorrida, como hace el BubbleSort. No importa que J no se use como índice, lo importante es que se incrementa igual que el avance de Ptr. No hay que controlar por NIL, porque sabemos que estamos recorriendo menos elementos que los que hay en total a medida que el algoritmo avanza.

Espero que se haya entendido un poco. De todas formas, recomendaría usar la inserción tradicional que es bastante más simple -y más si estás cursando Algoritmos-.

Saludos!
alguien sabe cuantos de cuantos aprobaron el sabado 26?
un ayudante me respondio esto:

La verdad no me acuerdo cuanta gente aprobo o no. Lo que te puedo decir extraoficialmente es que la gente que aprobo saco buena nota, pero me parece que hubo mas aplazos que aprobados.
Alguien rindio hoy algoritmos?
Que estructuras usaron ?

Slds
Páginas: 1 2
URLs de referencia