Linear Time Selection Algorithm