Searching Algorithms
Linear Search
func linearSearch(_ array: [Int], _ target: Int) -> Int? {
for (i, val) in array.enumerated() {
if val == target {
return i
}
}
return nil
}
// Time: O(n), Space: O(1)
Binary Search
func binarySearch(_ array: [Int], _ target: Int) -> Int? {
var low = 0, high = array.count - 1
while low <= high {
let mid = (low + high) / 2
if array[mid] == target { return mid }
else if array[mid] < target { low = mid + 1 }
else { high = mid - 1 }
}
return nil
}
// Time: O(log n), Space: O(1)