QuickSort Metodo de Ordenamiento
Página 1 de 1.
QuickSort Metodo de Ordenamiento
Aquí les presento un ejemplo del metodo de ordenamiento QuickSort que a diferencia del metodo de la burbuja usa recursividad. En el ejemplo se utiliza un tipo de datos de usuario llamado CartolaEjecutivo.
en el Declarations defino este tipo de Datos:
En la función que llama al metodo de ordenamiento creamos una nueva variable con el tipo definido por nosotros:
Aca el codigo de ordenamiento:
en el Declarations defino este tipo de Datos:
- Código:
Type CartolaEjecutivo
Nombre As String
ApellidosNombres As String
Rut As String
CC As String
F_Inicio As Variant
F_Termino As Variant
DiasdelPeriodo As Integer
Jornada As String
F_Ingreso As String
F_Egreso As String
Dias_Vaca As Integer
Dias_Licen As Integer
Dias_Ausen As Integer
Dias_Presentes As Integer
TotalDiasCargados As Integer
Filtro As Integer
Horas_Extras As Variant
Horas_Descto As Variant
End Type
En la función que llama al metodo de ordenamiento creamos una nueva variable con el tipo definido por nosotros:
- Código:
Dim ArrayCartolaAsistencia() As CartolaEjecutivo
Aca el codigo de ordenamiento:
- Código:
Sub quicksort(l As Integer,r As Integer, ArrayCartolaAsistencia() As CartolaEjecutivo)
Dim m As Variant
Dim i As Integer
Dim t As Variant
Dim j As Integer
If r > l Then
m = ArrayCartolaAsistencia(l).ApellidosNombres
j = r
i = l
While (i < j)
While (ArrayCartolaAsistencia(i).ApellidosNombres <= m And i < r)
i = i + 1
Wend
While ( ArrayCartolaAsistencia(j).ApellidosNombres > m)
j = j - 1
Wend
If i < j Then
Aux_Nombre = ArrayCartolaAsistencia(i).Nombre
Aux_ApellidosNombres = ArrayCartolaAsistencia(i).ApellidosNombres
Aux_Rut = ArrayCartolaAsistencia(i).Rut
Aux_CC = ArrayCartolaAsistencia(i).CC
Aux_F_Inicio = ArrayCartolaAsistencia(i).F_Inicio
Aux_F_Termino = ArrayCartolaAsistencia(i).F_Termino
Aux_DiasdelPeriodo = ArrayCartolaAsistencia(i).DiasdelPeriodo
Aux_Jornada = ArrayCartolaAsistencia(i).Jornada
Aux_F_Ingreso = ArrayCartolaAsistencia(i).F_Ingreso
Aux_F_Egreso = ArrayCartolaAsistencia(i).F_Egreso
Aux_Dias_Vaca = ArrayCartolaAsistencia(i).Dias_Vaca
Aux_Dias_Licen = ArrayCartolaAsistencia(i).Dias_Licen
Aux_Dias_Ausen = ArrayCartolaAsistencia(i).Dias_Ausen
Aux_Dias_Presentes = ArrayCartolaAsistencia(i).Dias_Presentes
Aux_TotalDiasCargados = ArrayCartolaAsistencia(i).TotalDiasCargados
Aux_Filtro = ArrayCartolaAsistencia(i).Filtro
Aux_Horas_Extras = ArrayCartolaAsistencia(i).Horas_Extras
Aux_Horas_Descto= ArrayCartolaAsistencia(i).Horas_Descto
ArrayCartolaAsistencia(i).Nombre = ArrayCartolaAsistencia(j).Nombre
ArrayCartolaAsistencia(i).ApellidosNombres = ArrayCartolaAsistencia(j).ApellidosNombres
ArrayCartolaAsistencia(i).Rut = ArrayCartolaAsistencia(j).Rut
ArrayCartolaAsistencia(i).CC = ArrayCartolaAsistencia(j).CC
ArrayCartolaAsistencia(i).F_Inicio = ArrayCartolaAsistencia(j).F_Inicio
ArrayCartolaAsistencia(i).F_Termino = ArrayCartolaAsistencia(j).F_Termino
ArrayCartolaAsistencia(i).DiasdelPeriodo = ArrayCartolaAsistencia(j).DiasdelPeriodo
ArrayCartolaAsistencia(i).Jornada = ArrayCartolaAsistencia(j).Jornada
ArrayCartolaAsistencia(i).F_Ingreso = ArrayCartolaAsistencia(j).F_Ingreso
ArrayCartolaAsistencia(i).F_Egreso = ArrayCartolaAsistencia(j).F_Egreso
ArrayCartolaAsistencia(i).Dias_Vaca = ArrayCartolaAsistencia(j).Dias_Vaca
ArrayCartolaAsistencia(i).Dias_Licen = ArrayCartolaAsistencia(j).Dias_Licen
ArrayCartolaAsistencia(i).Dias_Ausen = ArrayCartolaAsistencia(j).Dias_Ausen
ArrayCartolaAsistencia(i).Dias_Presentes = ArrayCartolaAsistencia(j).Dias_Presentes
ArrayCartolaAsistencia(i).TotalDiasCargados = ArrayCartolaAsistencia(j).TotalDiasCargados
ArrayCartolaAsistencia(i).Filtro = ArrayCartolaAsistencia(j).Filtro
ArrayCartolaAsistencia(i).Horas_Extras = ArrayCartolaAsistencia(j).Horas_Extras
ArrayCartolaAsistencia(i).Horas_Descto = ArrayCartolaAsistencia(j).Horas_Descto
ArrayCartolaAsistencia(j).Nombre = Aux_Nombre
ArrayCartolaAsistencia(j).ApellidosNombres = Aux_ApellidosNombres
ArrayCartolaAsistencia(j).Rut = Aux_Rut
ArrayCartolaAsistencia(j).CC = Aux_CC
ArrayCartolaAsistencia(j).F_Inicio = Aux_F_Inicio
ArrayCartolaAsistencia(j).F_Termino = Aux_F_Termino
ArrayCartolaAsistencia(j).DiasdelPeriodo = Aux_DiasdelPeriodo
ArrayCartolaAsistencia(j).Jornada = Aux_Jornada
ArrayCartolaAsistencia(j).F_Ingreso = Aux_F_Ingreso
ArrayCartolaAsistencia(j).F_Egreso = Aux_F_Egreso
ArrayCartolaAsistencia(j).Dias_Vaca = Aux_Dias_Vaca
ArrayCartolaAsistencia(j).Dias_Licen = Aux_Dias_Licen
ArrayCartolaAsistencia(j).Dias_Ausen = Aux_Dias_Ausen
ArrayCartolaAsistencia(j).Dias_Presentes = Aux_Dias_Presentes
ArrayCartolaAsistencia(j).TotalDiasCargados = Aux_TotalDiasCargados
ArrayCartolaAsistencia(j).Filtro = Aux_Filtro
ArrayCartolaAsistencia(j).Horas_Extras = Aux_Horas_Extras
ArrayCartolaAsistencia(j).Horas_Descto = Aux_Horas_Descto
End If
Wend
Aux_Nombre = ArrayCartolaAsistencia(l).Nombre
Aux_ApellidosNombres = ArrayCartolaAsistencia(l).ApellidosNombres
Aux_Rut = ArrayCartolaAsistencia(l).Rut
Aux_CC = ArrayCartolaAsistencia(l).CC
Aux_F_Inicio = ArrayCartolaAsistencia(l).F_Inicio
Aux_F_Termino = ArrayCartolaAsistencia(l).F_Termino
Aux_DiasdelPeriodo = ArrayCartolaAsistencia(l).DiasdelPeriodo
Aux_Jornada = ArrayCartolaAsistencia(l).Jornada
Aux_F_Ingreso = ArrayCartolaAsistencia(l).F_Ingreso
Aux_F_Egreso = ArrayCartolaAsistencia(l).F_Egreso
Aux_Dias_Vaca = ArrayCartolaAsistencia(l).Dias_Vaca
Aux_Dias_Licen = ArrayCartolaAsistencia(l).Dias_Licen
Aux_Dias_Ausen = ArrayCartolaAsistencia(l).Dias_Ausen
Aux_Dias_Presentes = ArrayCartolaAsistencia(l).Dias_Presentes
Aux_TotalDiasCargados = ArrayCartolaAsistencia(l).TotalDiasCargados
Aux_Filtro = ArrayCartolaAsistencia(l).Filtro
Aux_Horas_Extras = ArrayCartolaAsistencia(l).Horas_Extras
Aux_Horas_Descto= ArrayCartolaAsistencia(l).Horas_Descto
ArrayCartolaAsistencia(l).Nombre = ArrayCartolaAsistencia(j).Nombre
ArrayCartolaAsistencia(l).ApellidosNombres = ArrayCartolaAsistencia(j).ApellidosNombres
ArrayCartolaAsistencia(l).Rut = ArrayCartolaAsistencia(j).Rut
ArrayCartolaAsistencia(l).CC = ArrayCartolaAsistencia(j).CC
ArrayCartolaAsistencia(l).F_Inicio = ArrayCartolaAsistencia(j).F_Inicio
ArrayCartolaAsistencia(l).F_Termino = ArrayCartolaAsistencia(j).F_Termino
ArrayCartolaAsistencia(l).DiasdelPeriodo = ArrayCartolaAsistencia(j).DiasdelPeriodo
ArrayCartolaAsistencia(l).Jornada = ArrayCartolaAsistencia(j).Jornada
ArrayCartolaAsistencia(l).F_Ingreso = ArrayCartolaAsistencia(j).F_Ingreso
ArrayCartolaAsistencia(l).F_Egreso = ArrayCartolaAsistencia(j).F_Egreso
ArrayCartolaAsistencia(l).Dias_Vaca = ArrayCartolaAsistencia(j).Dias_Vaca
ArrayCartolaAsistencia(l).Dias_Licen = ArrayCartolaAsistencia(j).Dias_Licen
ArrayCartolaAsistencia(l).Dias_Ausen = ArrayCartolaAsistencia(j).Dias_Ausen
ArrayCartolaAsistencia(l).Dias_Presentes = ArrayCartolaAsistencia(j).Dias_Presentes
ArrayCartolaAsistencia(l).TotalDiasCargados = ArrayCartolaAsistencia(j).TotalDiasCargados
ArrayCartolaAsistencia(l).Filtro = ArrayCartolaAsistencia(j).Filtro
ArrayCartolaAsistencia(l).Horas_Extras = ArrayCartolaAsistencia(j).Horas_Extras
ArrayCartolaAsistencia(l).Horas_Descto = ArrayCartolaAsistencia(j).Horas_Descto
ArrayCartolaAsistencia(j).Nombre = Aux_Nombre
ArrayCartolaAsistencia(j).ApellidosNombres = Aux_ApellidosNombres
ArrayCartolaAsistencia(j).Rut = Aux_Rut
ArrayCartolaAsistencia(j).CC = Aux_CC
ArrayCartolaAsistencia(j).F_Inicio = Aux_F_Inicio
ArrayCartolaAsistencia(j).F_Termino = Aux_F_Termino
ArrayCartolaAsistencia(j).DiasdelPeriodo = Aux_DiasdelPeriodo
ArrayCartolaAsistencia(j).Jornada = Aux_Jornada
ArrayCartolaAsistencia(j).F_Ingreso = Aux_F_Ingreso
ArrayCartolaAsistencia(j).F_Egreso = Aux_F_Egreso
ArrayCartolaAsistencia(j).Dias_Vaca = Aux_Dias_Vaca
ArrayCartolaAsistencia(j).Dias_Licen = Aux_Dias_Licen
ArrayCartolaAsistencia(j).Dias_Ausen = Aux_Dias_Ausen
ArrayCartolaAsistencia(j).Dias_Presentes = Aux_Dias_Presentes
ArrayCartolaAsistencia(j).TotalDiasCargados = Aux_TotalDiasCargados
ArrayCartolaAsistencia(j).Filtro = Aux_Filtro
ArrayCartolaAsistencia(j).Horas_Extras = Aux_Horas_Extras
ArrayCartolaAsistencia(j).Horas_Descto = Aux_Horas_Descto
Call quicksort (l, j - 1, ArrayCartolaAsistencia)
Call quicksort ((j + 1), r, ArrayCartolaAsistencia)
End If
End Sub
Página 1 de 1.
Permisos de este foro:
No puedes responder a temas en este foro.
|
|