1 / 16

אלגוריתמי חיפוש

אלגוריתמי חיפוש. Brute Force. Module Module1 Function BruteForce ( ByRef x() As Integer , ByRef item As Integer ) As Integer Dim i As Integer For i = 0 To x.Length () - 1 If (x( i ) = item) Then Return i End If Next Return -1 'Not found! End Function Sub Main()

ernie
Download Presentation

אלגוריתמי חיפוש

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. אלגוריתמיחיפוש

  2. Brute Force ModuleModule1 FunctionBruteForce(ByRef x() AsInteger, ByRef item AsInteger) AsInteger DimiAsInteger Fori = 0 Tox.Length() - 1 If (x(i) = item) Then Returni EndIf Next Return -1 'Not found! EndFunction SubMain() Dim numbers() AsInteger = {1, 2, 3, 4, 10, 10, 71, 101} Dim key AsInteger key = Console.ReadLine() Console.WriteLine(BruteForce(numbers, key)) EndSub EndModule

  3. BubbleSearch Sub Swap(ByRef x AsInteger, ByRef y AsInteger) Dim temp AsInteger = x x = y y = temp EndSub FunctionBubbleSearch(ByRef x() AsInteger, ByRef item AsInteger) AsInteger DimiAsInteger Fori = 0 Tox.Length() - 1 If (x(i) = item) Then Ifi > 0 Then Swap(x(i), x(i - 1)) EndIf Returni EndIf Next Return -1 'Not found! EndFunction SubMain() Dim numbers() AsInteger = {1, 2, 3, 4, 10, 10, 71, 101} Dim key AsInteger key = Console.ReadLine() Console.WriteLine(BubbleSearch(numbers, key)) Console.WriteLine(BubbleSearch(numbers, key)) EndSub

  4. ? 12 חיפושבינרי 2 5 8 11 23 24 28 34 38 41 44 45 52 60 70 מבוא למדעי המחשב - מאיר קומר - סמסטר א'- תשס"ט - שיעור מספר 7

  5. חיפושבינארי אבל איך יודעים אם מצאתי? יופי, אבל איפה? FunctionBinarySearch(ByRef x() AsInteger, ByRef item AsInteger) AsInteger Dim Mid AsInteger Dim low AsInteger = 0 Dim high AsInteger = x.Length() - 1 While (low <= high) Console.WriteLine("high is " & high) Console.WriteLine("low is " & low) Mid = (low + high) \ 2 If (item = x(Mid)) Then Console.WriteLine("I found it!!") Return Mid 'Found here! ElseIf item > x(Mid) Then low = Mid + 1 Else high = Mid - 1 EndIf EndWhile Return -1 'Not found! EndFunction מבוא למדעי המחשב - מאיר קומר - סמסטר א'- תשס"ט - שיעור מספר 7

  6. Main דוגמא של Sub Main() Dim numbers() AsInteger = {1, 2, 3, 4, 10, 10, 71, 101} Dim key AsInteger key = Console.ReadLine() Console.WriteLine(BinarySearch(numbers, key)) EndSub

  7. חיפושבינארי רקורסיבי SubRBinarySearch(ByRef x() AsInteger, ByRef item AsInteger, ByVal low AsInteger, ByVal high AsInteger) Dim Mid AsInteger If (low > high) Then Console.WriteLine("Item not found") Else Mid = (low + high) / 2 If item > x(Mid) Then RBinarySearch(x, item, Mid + 1, high) ElseIf item < x(Mid) Then RBinarySearch(x, item, low, Mid - 1) Else Console.WriteLine("I found it in position " & Mid) EndIf EndIf EndSub

  8. Main דוגמא של Sub Main() Dim numbers() AsInteger = {1, 2, 3, 4, 10, 10, 71, 101} Dim key AsInteger key = Console.ReadLine() RBinarySearch(numbers, key, 0, numbers.Length() - 1) EndSub

  9. עץ בינרי מלא שורש 8 4 12 6 15 2 10 5 7 1 3 14 16 9 11 עלים

  10. עץ בינרי חלקי 8 4 12 6 15 2 7 1 14 16

  11. חיפוש בעץ בינרי • האם הערך X נמצא בעץ? • נתחיל מהשורש של העץ • בכל קדקוד נחליט אם לפנות ימינה או שמאלה • אם X שווה לקדקוד הנוכחי • מצאנו! • אחרת אם הקדקוד הנוכחי אינו עלה • אם X גדול מערך הקדקוד • נפנה ימינה • אם X קטן מערך הקדקוד • נפנה שמאלה • אם הגענו לעלה שאינו שווה לX • X לא קיים בעץ

  12. Boyer and Moore Algorithm

  13. התאמת התבנית ימין לשמאל • ההתאמה מתבצעת מסוף המילה לכיוון ההתחלה • (כמו עברית) • עבור תבנית: • abc: ↓ T:bbacdcbaabcddcdaddaaabcbcb P:abc • במקרה הגרוע עדיין דורש m*n השוואות

  14. Boyer-Moore Example T: P:

  15. חיפוש פשוט לטקסטים ModuleModule1 Sub Main() Dim t AsString = "my name is avi, not aviya, or aviva, avihu, aviv or david!" Console.WriteLine(t.IndexOf("avi")) Console.WriteLine(t.LastIndexOf("avi")) EndSub EndModule

  16. חיפוש מחוכם לטקסטיםב VB ImportsSystem.Text.RegularExpressions ModuleModule1 Sub Main() DimmyMatchesAsMatchCollection Dim t AsString = "my name is avi, not aviya, or aviva, avihu, aviv or david!" DimmyRegexAsNewRegex("avi") myMatches = myRegex.Matches(t) DimsuccessfulMatchAsMatch ForEachsuccessfulMatchInmyMatches Console.WriteLine(successfulMatch.Index) Next EndSub EndModule

More Related