Ir para o conteúdo
  • Revista PROGRAMAR: Já está disponível a edição #57 da revista programar. Faz já o download aqui!

freaklori

[Resolvido] Ordenar Vector de Inteiros

Mensagens Recomendadas

freaklori    0
freaklori

Viva,

Criei um ordenador de vectores inteiros... mas eu sei que existe maneiras melhores de o fazer...

Aqui fica o código, critiquem!

Private Function OrdernarVector(ByVal v() As Integer) As Integer()
    Dim vOrdenado(0) As Integer

    For i As Integer = 0 To UBound(v)
      If i = 0 Then 'Posição 0
        ReDim Preserve vOrdenado(UBound(vOrdenado) + 1)
        vOrdenado(UBound(vOrdenado)) = v(i)
        GoTo JumpFor
      Else
        vOrdenado(0) = v(i) ' Posição 0 é o valor analisar
        For x As Integer = 1 To UBound(vOrdenado)
          If vOrdenado(0) > vOrdenado(UBound(vOrdenado)) Then  'Se For maior que o ultimo 
            ReDim Preserve vOrdenado(UBound(vOrdenado) + 1)    'Colocar na ultima posição
            vOrdenado(UBound(vOrdenado)) = vOrdenado(0)
            GoTo JumpFor
          ElseIf vOrdenado(0) < vOrdenado(x) Then 'Ficamos com a posição do vector (X)
            ReDim Preserve vOrdenado(UBound(vOrdenado) + 1)
            For w As Integer = UBound(vOrdenado) To x Step -1
              vOrdenado(w) = vOrdenado(w - 1)
            Next
            vOrdenado(x) = vOrdenado(0)
            vOrdenado(0) = 0

            GoTo JumpFor

          End If
        Next
      End If

      'Jump >> Continuar analisar vector
JumpFor:
    Next
    Return vOrdenado
  End Function

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
jpaulino    106
jpaulino

Porquê está a usar arrays "à antiga" ? Podes utilizar as novas listas e é tudo mais simples.

        ' Cria uma nova lista
        Dim list As New List(Of Integer)

        ' Adiciona alguns números
        list.AddRange(New Integer() {78, 33, 1, 10, 2, 3, 55, 800, 100, 30})

        ' Ordena a lista
        list.Sort()

        ' Mostra os resultados ordenados
        For x As Integer = 0 To list.Count - 1
            Debug.WriteLine(list(x))
        Next

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
jpaulino    106
jpaulino

Bem, ou eu não entendo o que queres fazer, ou tu gostas de complicar  :P

E assim:

        ' Adiciona valores
        Dim myArray(4) As Integer
        myArray(0) = 1
        myArray(1) = 10
        myArray(2) = 2
        myArray(3) = 120
        myArray(4) = 78

        ' Ordena o array
        Array.Sort(myArray)

        ' Mostra os valores ordenados
        For Each value As Integer In myArray
            Debug.WriteLine(value.ToString)
        Next

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
freaklori    0
freaklori

gosto de complicar lol

amanha testo isso mas julgo que isso do array.sort nao funciona, julgo que tem que ter um iCompare ou algo do genero

Cumps

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
jpaulino    106
jpaulino

amanha testo isso mas julgo que isso do array.sort nao funciona, julgo que tem que ter um iCompare ou algo do genero

Ok, testa lá  :P

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!

Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.

Entrar Agora


×

Aviso Sobre Cookies

Ao usar este site você aceita a nossa Política de Privacidade