QuickSort Metodo de Ordenamiento

Ver el tema anterior Ver el tema siguiente Ir abajo

QuickSort Metodo de Ordenamiento

Mensaje por JoseRios el Lun Feb 25, 2008 1:42 pm

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:
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
avatar
JoseRios

Cantidad de envíos : 39
Edad : 32
Localización : Santiago, Chile
Fecha de inscripción : 25/02/2008

Ver perfil de usuario http://noteroschile.wordpress.com

Volver arriba Ir abajo

Ver el tema anterior Ver el tema siguiente Volver arriba

- Temas similares

 
Permisos de este foro:
No puedes responder a temas en este foro.