Hi, as suggested by the title I'm having trouble coding a binary search. I hope you know the binary search so you can help. Basically the problem is that when the list is split in half the program will find a value in an array in the first half but not if it is located in the second half, I can't figure out why...
Sorry but i haven't worked out how to insert code in a post properly either.
Module Module1
Sub Main()
Dim FirstVal As Integer
Dim LastVal As Integer
Dim MidVal As Integer
Dim FoundFlag As Boolean
Dim Search As String
Dim Array(8) As String
Array(1) = 2
Array(2) = 3
Array(3) = 6
Array(4) = 7
Array(5) = 35
Array(6) = 57
Array(7) = 66
Array(8) = 87
For i = 1 To 8
Console.WriteLine(Array(i))
Next
Console.ReadLine()
FoundFlag = False
Search = 7
MidVal = 0
FirstVal = 1
LastVal = Array.Length - 1
Do
MidVal = LastVal / 2
If Array(MidVal) = Search Then
Console.WriteLine("Your search of " & Array(MidVal) & " is in position " & MidVal)
FoundFlag = True
End If
If Array(MidVal) > Search Then
FirstVal = Array(MidVal + 1)
LastVal = Array.Length
FoundFlag = False
End If
If FirstVal = LastVal Then
Console.WriteLine("Sorry, search cannot be found")
Exit Do
End If
Loop Until FoundFlag = True
Do
MidVal = LastVal / 2
If Array(MidVal) < Search Then
FirstVal = 1
LastVal = Array(MidVal - 1)
FoundFlag = False
End If
If FirstVal = LastVal Then
Console.WriteLine("Sorry, search cannot be found")
Exit Do
End If
Loop Until FoundFlag = True
Console.ReadLine()
End Sub
End Module
Sorry but i haven't worked out how to insert code in a post properly either.
Module Module1
Sub Main()
Dim FirstVal As Integer
Dim LastVal As Integer
Dim MidVal As Integer
Dim FoundFlag As Boolean
Dim Search As String
Dim Array(8) As String
Array(1) = 2
Array(2) = 3
Array(3) = 6
Array(4) = 7
Array(5) = 35
Array(6) = 57
Array(7) = 66
Array(8) = 87
For i = 1 To 8
Console.WriteLine(Array(i))
Next
Console.ReadLine()
FoundFlag = False
Search = 7
MidVal = 0
FirstVal = 1
LastVal = Array.Length - 1
Do
MidVal = LastVal / 2
If Array(MidVal) = Search Then
Console.WriteLine("Your search of " & Array(MidVal) & " is in position " & MidVal)
FoundFlag = True
End If
If Array(MidVal) > Search Then
FirstVal = Array(MidVal + 1)
LastVal = Array.Length
FoundFlag = False
End If
If FirstVal = LastVal Then
Console.WriteLine("Sorry, search cannot be found")
Exit Do
End If
Loop Until FoundFlag = True
Do
MidVal = LastVal / 2
If Array(MidVal) < Search Then
FirstVal = 1
LastVal = Array(MidVal - 1)
FoundFlag = False
End If
If FirstVal = LastVal Then
Console.WriteLine("Sorry, search cannot be found")
Exit Do
End If
Loop Until FoundFlag = True
Console.ReadLine()
End Sub
End Module