Linear searching scans each element of an array one-by-one to find a target value. It has a time complexity of O(n) as the worst case is scanning all elements. Binary search recursively halves the search space to find a target value in a sorted array in O(log n) time on average. Hashing maps elements to array indices using a hash function, allowing constant time lookups. Collisions occur when distinct elements hash to the same index, and are resolved using chaining or linear probing.