This document discusses linear search and binary search algorithms. Linear search sequentially checks each element of an unsorted array to find a target value, resulting in O(n) time complexity. Binary search works on a sorted array, comparing the target to the middle element and recursively searching half the array, requiring O(log n) time. The document provides pseudocode for both algorithms and compares their performance on different sized inputs. It also discusses properties of greedy algorithms and provides an example of when a greedy solution fails to find the optimal result.