differential search algorithm