|
Dit artikel is gepubliceerd op woensdag 28 april 2010 op vbvoorbeelden, bezoek de website voor een recente versie van dit artikel of andere artikels.
De eenvoudigste methode om een waarde op te zoeken in een array, is het simpelweg element per element overlopen van de array tot je de waarde gevonden hebt of tot je kan concluderen dat de waarde zich niet in de array bevindt.
Dit is wat men noemt het lineair zoeken. Hierin gaat men op iteratieve wijze de elementen in een bepaalde volgorde ( van voor naar achter, van achter naar voor of een andere volgorde ) zal benaderen en element per element controleren of het overeenkomt met de te zoeken waarde. De iteratieve benadering kan beëindigd worden vanaf de waarde gevonden is of indien de volledige collectie doorzocht is.
In onderstaand algoritme gaan we in een tabel ( opgevuld met de veelvouden van 2 ) opzoek naar verschillende waarden.
Het algoritme zal weergeven of de waarde gevonden wordt, indien gevonden wordt de positie ( de index ) van dit element weergegeven. Er wordt ook weergeven of de volledige tabel doorzocht werd. Visual Basic Broncode Module LinearSearch
Sub Main()
Dim base As Integer = 2
Dim count As Integer = 10
Dim upperbound As Integer = count - 1
Dim numbers(upperbound) As Integer
Dim index As Integer
For index = 0 To upperbound
numbers(index) = (index + 1) * base
Next
Dim number As Integer
For number = base - 1 To base * count + 1
Dim found As Boolean = False
Dim exhausted As Boolean = False
index = -1
Do Until found OrElse exhausted
index += 1
found = (numbers(index) = number)
exhausted = (index = upperbound)
Loop
If found Then
Console.Write(number & " found at index " & index)
Else
Console.Write(number & " not found")
End If
If exhausted Then
Console.WriteLine(", search exhausted")
Else
Console.WriteLine(", search not exhausted")
End If
Next
Console.ReadLine()
End Sub
End ModuleDownload Visual Basic Broncode Bekijk deze Broncode in Visual C#
Visual Basic Output 1 not found, search exhausted
2 found at index 0, search not exhausted
3 not found, search exhausted
4 found at index 1, search not exhausted
5 not found, search exhausted
6 found at index 2, search not exhausted
7 not found, search exhausted
8 found at index 3, search not exhausted
9 not found, search exhausted
10 found at index 4, search not exhausted
11 not found, search exhausted
12 found at index 5, search not exhausted
13 not found, search exhausted
14 found at index 6, search not exhausted
15 not found, search exhausted
16 found at index 7, search not exhausted
17 not found, search exhausted
18 found at index 8, search not exhausted
19 not found, search exhausted
20 found at index 9, search exhausted
21 not found, search exhausted 7.2.1. OefeningOpgave :
Maak een programma dat via de "linear search" methode op basis van een postcode op zoek gaat naar de gerelateerde gemeente.
Doe dit door onderstaande programma-code te vervolledigen. Visual Basic Broncode Module ExerciseTask
Sub Main()
Dim count As Integer = 3
Dim names() As String = {"Brussels", "Antwerp", "Ghent"}
Dim zipCodes() As Integer = {1000, 2000, 9000}
Console.WriteLine("Zip Code ?")
Dim zipCode As String = Console.ReadLine()
Console.ReadLine()
End Sub
End ModuleDownload Visual Basic Broncode Bekijk deze Broncode in Visual C#
Visual Basic Output Zip Code ?
2000
Antwerp Visual Basic Output Zip Code ?
4000
City not found. Oplossing : Visual Basic Broncode Module ExerciseSolution
Sub Main()
Dim count As Integer = 3
Dim names() As String = {"Brussels", "Antwerp", "Ghent"}
Dim zipCodes() As Integer = {1000, 2000, 9000}
Console.WriteLine("Zip Code ?")
Dim zipCode As String = Console.ReadLine()
Dim found, exhausted As Boolean
Dim index As Integer = -1
Do Until found OrElse exhausted
index += 1
found = (zipCodes(index) = zipCode)
exhausted = (index = count - 1)
Loop
If found Then
Console.WriteLine(names(index))
Else
Console.WriteLine("City not found.")
End If
Console.ReadLine()
End Sub
End ModuleDownload Visual Basic Broncode Bekijk deze Broncode in Visual C#
Terug naar boven 7.2.2. Voorgedefinieerde ZoekmethodenMen kan ook van voorgedefinieerde functionaliteiten gebruik maken om een waarde in een tabel te gaan opzoeken (1).
De shared function IndexOf van de klasse Array zal in de tabel ( eerste argumentwaarde ) de eerste positie van de waarde ( tweede argumentwaarde ) opleveren. Wordt de waarde niet gevonden dan levert deze function -1 op. Visual Basic Broncode Module IndexOf
Sub Main()
Dim base As Integer = 2
Dim count As Integer = 10
Dim upperbound As Integer = count - 1
Dim numbers(upperbound) As Integer
Dim index As Integer
For index = 0 To upperbound
numbers(index) = (index + 1) * base
Next
Dim number As Integer
For number = base - 1 To base * count + 1
index = Array.IndexOf(numbers, number)
Dim found As Boolean = index > -1
If found Then
Console.WriteLine(number & " found at index " & index)
Else
Console.WriteLine(number & " not found")
End If
Next
Console.ReadLine()
End Sub
End ModuleDownload Visual Basic Broncode Bekijk deze Broncode in Visual C#
Visual Basic Output 1 not found
2 found at index 0
3 not found
4 found at index 1
5 not found
6 found at index 2
7 not found
8 found at index 3
9 not found
10 found at index 4
11 not found
12 found at index 5
13 not found
14 found at index 6
15 not found
16 found at index 7
17 not found
18 found at index 8
19 not found
20 found at index 9
21 not found
Dit artikel is gepubliceerd op woensdag 28 april 2010 op vbvoorbeelden, bezoek de website voor een recente versie van dit artikel of andere artikels.
Visual Basic 2008 & 2010 Boeken
Berichten
|