Есть ли способ исправить ошибку индекса в пузырьковой сортировке? - PullRequest
0 голосов
/ 28 апреля 2020

Я пытаюсь написать пузырьковую сортировку в vb, и у меня есть правильный алгоритм, но он всегда говорит: «Индекс находился за пределами массива». который я не знаю как исправить. Я поставлю код ниже, и любая помощь будет хорошей.

    Sub Main()
    Dim unsorted() As Integer = {17, 19, 12, 10, 15, 20}
    Dim n As Integer = unsorted.Length
    Dim swapped As Boolean = True
    Dim temp
    Dim list As String = ""

    While n > 0 And swapped = True
        For a = 0 To n - 1
            If unsorted(a) > unsorted(a + 1) Then
                temp = unsorted(a)
                unsorted(a) = unsorted(a + 1)
                unsorted(a + 1) = temp
                swapped = True
            End If
        Next
    End While
    For Each number In unsorted
        number &= list & " "
    Next
    Console.WriteLine(list)
    Console.ReadLine()
End Sub

Ответы [ 2 ]

0 голосов
/ 28 апреля 2020

действительно, ваша реализация алгоритма пузырьковой сортировки выглядит несколько ошибочно; Я также вижу некоторые проблемы в вашем коде.

код:

a не объявлен

temp должен быть целым

алгоритм:

'n' - длина вашего массива, поэтому она всегда будет> 0 (при условии)

'swapped' объявляется как 'true' и никогда не устанавливается в false, поэтому оно будет всегда «true»

, если в результате сравнения не происходит обмена (т. е. item (a)

после свопинга вы должны выйти из для l oop и перезапустить с = 0

надеюсь, это поможет, Luca

0 голосов
/ 28 апреля 2020

Я надеюсь, что этот код будет работать для вас:

Private unsorted() As Byte = {17, 19, 12, 10, 15, 20}

Sub Main()
    Dim temp As Byte

    For pass = 1 To unsorted.Length - 1
        For i = 0 To unsorted.Length - 2
            If unsorted(i) > unsorted(i + 1) Then
                temp = unsorted(i)
                unsorted(i) = unsorted(i + 1)
                unsorted(i + 1) = temp
            End If
        Next i
    Next pass

    Dim output As String = ""

    For i = 0 To unsorted.Length - 1
        output &= unsorted(i).ToString + vbNewLine
    Next

    Console.WriteLine(output)

    Console.ReadKey()
End Sub

Вот результат:

Bubble Sort Algorithm Success

Наслаждайтесь Bubble Sort .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...