2017-11-08 9 views
-1

リストボックス内の数字のリストに挿入ソートを適用しようとしています。コードを書くことによってアルゴリズムを練習することはできますが、 これを行うことはできません。リストボックス内の数字のリストを挿入ソートアルゴリズムを使用してソートすることができません

インデックス1を2にスワップしますが、すべての数字を昇順にソートするわけではありません。

私のコードの問題点は何ですか?

Private Sub Button3_Click(sender As Object, e As EventArgs) Handles btnInsSort.Click 
    'Dim selectedItems = lstBox2.SelectedItems.Cast(Of [String])().ToList() 
    Dim arr = ListBox1.Items.Cast(Of [String])().ToList() 
    Dim j = ListBox1.SelectedIndex 
    Dim Key As String 

    For Each j In ListBox1.Items 
     j = 2 
     Key = ListBox1.Items(j) 
     i = j - 1 

    Next 
    While (i > 0 And ListBox1.Items(i) > ListBox1.Items(j)) 
     ListBox1.Items(i + 1) = ListBox1.Items(i) 
      i = i - 1 

     ListBox1.Items(i + 1) = Key 

    End While 


End Sub 
+0

最初のForループで何をしようとしていますか?ループ変数としてjを使用していますが、2に設定しています。ソースファイルの上部に 'Option Strict On'を追加すると、なぜループが動作しないのかがわかります。 – dwilliss

答えて

0

あなたは仲間になります。配列内の数字をリストボックスのアイテムとして表示

Dim SortNumber() As Integer = {5, 6, 3, 1, 8, 9, 4, 2, 7, 0} 
Dim yCount As Integer = 0 
Do 
    Dim CurNumber As Integer = SortNumber(yCount) 'Save current number 
    Dim xCount As Integer = 0 
    If yCount > 0 Then xCount = yCount - 1  ' start shift from here 
    Dim ReplaceNum As Boolean = False 
    Do While CurNumber < SortNumber(xCount)  'shift all position until current number is bigger then the one being shifted 
     If CurNumber < SortNumber(xCount) Then 
      ReplaceNum = True    'Number shifted save current number at the right position 
      SortNumber(xCount + 1) = SortNumber(xCount) 
     End If 
     xCount -= 1 
     If xCount = -1 Then Exit Do 
    Loop 
    If ReplaceNum = True Then SortNumber(xCount + 1) = CurNumber 'Place the current number at the right position 
    yCount += 1 
Loop Until yCount = SortNumber.Count 
関連する問題