none
MergeSort - Estouro de Memória RRS feed

  • Pergunta

  • Estou organizando uma matriz com mais de 50.000 numeros, porém esta dando um erro memória, como posso resolver isso.

     

    Abaixo Segue o código que estou usando

    Private Sub m_sort(ByVal left As Single, ByVal right As Single)

    'Particionando a Matriz

    Dim mid As Single

    If right > left Then

    mid = (right + left) / 2

    m_sort(left, mid)

    m_sort(mid + 1, right)

    Merge(left, mid + 1, right)

    End If

    End Sub

    Private Sub Merge(ByVal left As Integer, ByVal mid As Integer, ByVal right As Integer)

    Dim i As Integer, left_end As Integer, num_elements As Integer, tmp_pos As Integer

    left_end = mid - 1

    tmp_pos = left

    num_elements = right - left + 1

    While (left <= left_end) AndAlso (mid <= right)

    If _Amostra(left) <= _Amostra(mid) Then

    lstSaida(tmp_pos) = _Amostra(left)

    tmp_pos = tmp_pos + 1

    left = left + 1

    Else

    lstSaida(tmp_pos) = _Amostra(mid)

    tmp_pos = tmp_pos + 1

    mid = mid + 1

    End If

    End While

    While left <= left_end

    lstSaida(tmp_pos) = _Amostra(left)

    left = left + 1

    tmp_pos = tmp_pos + 1

    End While

    While mid <= right

    lstSaida(tmp_pos) = _Amostra(mid)

    mid = mid + 1

    tmp_pos = tmp_pos + 1

    End While

    For i = 0 To num_elements - 1

    _Amostra(right) = lstSaida(right)

    right = right - 1

    Next

    End Sub

    #End Region

    terça-feira, 30 de setembro de 2008 18:37

Respostas

Todas as Respostas