• Revista PROGRAMAR: Já está disponível a edição #53 da revista programar. Faz já o download aqui!

freaklori

[Resolvido] Ordenar Vector de Inteiros

8 mensagens neste tópico

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

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

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

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Estou a usar array pq nao posso usar listas lol e apesar de ser mais simples nao gosto....

lol

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

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

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

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

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

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

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

boa boa!

nao é que bomba mesmo :P

Se não bombasse também não te mostrava :)

0

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