1. Introduction
Binary Search is a search algorithm that finds the position of a target value within a sorted array or list. It significantly improves linear search by reducing the number of comparisons needed, hence increasing the speed of the search.
2. Implementation Steps
1. Start with the entire list and determine the middle element.
2. If the middle element equals the target value, return its index.
3. If the target value is less than the middle element, repeat the search with the left half of the list.
4. If the target value is greater than the middle element, repeat the search with the right half of the list.
5. Repeat steps 1-4 until the target value is found or the list is exhausted.
3. Implementation in Swift
func binarySearch<T: Comparable>(_ array: [T], _ target: T) -> Int? { var low = 0 // 1. Initialize the lower boundary. var high = array.count - 1 // 2. Initialize the upper boundary. while low <= high { // 3. Continue while there's a segment to search. let mid = (low + high) / 2 // 4. Calculate the middle index. if array[mid] == target { // 5. Check if the middle element matches the target. return mid } else if array[mid] < target { // 6. Adjust boundaries for the right half. low = mid + 1 } else { // 7. Adjust boundaries for the left half. high = mid - 1 } } return nil // 8. If the target value is not found, return nil. } // Example Usage let sortedNumbers = [12, 29, 37, 40, 57, 68, 72, 93] if let index = binarySearch(sortedNumbers, 57) { print("Found at index:", index) } else { print("Not found.") }
Output:
Found at index: 4
Explanation:
1. Binary Search requires the input array to be sorted. It then starts by defining the lower (low) and upper (high) boundaries of the array segment being considered.
2. A loop continues as long as there's a segment of the list to be considered, i.e., low is less than or equal to high.
3. The middle index of the segment is calculated.
4. The value at this middle index is compared to the target value.
5. If they match, the index is returned.
6. If the target value is greater than the middle value, the search continues with the right half of the list by adjusting the low boundary.
7. If the target value is smaller than the middle value, the search continues with the left half of the list by adjusting the high boundary.
8. The process continues until either the value is found or the segment size becomes zero (i.e., low exceeds high).
Binary Search has a time complexity of O(log n), which makes it much faster than Linear Search for large datasets, but it requires the list to be sorted.
DSA Related Swift Examples:
Swift Hello World Program Swift Program to Add Two Numbers Swift Program to Subtract Two Numbers Swift Program to Multiply Two Numbers Swift Program to Divide Two Numbers Swift Program to Find Remainder Swift Program to Check Even or Odd Swift Program to Find Factorial of a Number Swift Program to Generate Fibonacci Series Swift Program to Swap Two Numbers Without Using Temporary Variable Swift Program to Find Largest Among Three Numbers Swift Program to Calculate the Area of a Circle Swift Program to Reverse a Number Swift Program to Make a Simple Calculator Swift Program to Check Palindrome Swift Program to Count Number of Digits in an Integer Swift Program to Sum of Natural Numbers Swift Program to Display Times Table Swift Program to Check Prime Number Swift Program to Find LCM Swift Program to Find GCD Swift Program to Find the Power of a Number Swift Program to Split a String into Words Swift Program to Check Leap Year Swift Program to Join Two Strings Swift Program to Check Armstrong Number Swift Program to Find Sum of Array Elements Swift Program to Find the Largest Element of an Array Swift Program to Perform Matrix Addition Swift Program to Transpose a Matrix Swift Program to Multiply Two Matrices Swift Program to Find Length of a String Swift Program to Copy One String to Another String Swift Program to Concatenate Two Strings Swift Program to Search for a Character in a String Swift Program to Count Frequency of a Character in String Swift Program to Create a Simple Class and Object Swift Program to Implement Inheritance Swift Program to Handle Simple Exceptions Swift Variables and Constants Example Swift Data Types (Int, Double, String) Example Swift Optionals and Optional Binding Example Swift Tuples Example Swift Array Example Swift Dictionary Example Swift Set Example Swift Closures Example Swift Enums Example Swift Structures Example Swift Properties (Stored, Computed) Example Swift Methods (Instance, Type) Example Swift Subscripts Example Swift Inheritance and Overriding Example Swift Protocols Example Swift Extensions Example Swift Generics and Generic Functions Example Swift Error Handling with Do-Catch Example Swift Guard Statement Example Swift Defer Statement Example Swift Type Casting (as, is, as?) Example Swift Access Control Example Swift Attributes (@available, @discardableResult) Example Swift Pattern Matching Example Swift Switch Statement and Cases Example Swift For-In Loop Example Swift While and Repeat-While Loops Example Swift Conditional Statements (If, If-Else, Ternary) Example Swift Operators Example Swift Memory Management Example Swift Strong, Weak, and Unowned References Example Swift Initialization and Deinitialization Example Swift Protocol-Oriented Programming Example Swift Nested Types Example Swift Type Aliases Example Swift Dynamic Member Lookup Example Swift Lazy Stored Properties Example Swift KeyPaths Example Swift String Manipulation and Methods Example Swift Regular Expressions Example Swift
Comments
Post a Comment