Definition of efficiency versus complexity of algorithm
An algorithm is often called "efficient" if its runtime is short, compared to the inherent difficulty of the problem. 

For example, you cannot sort arbitrary arrays by comparing keys in less than O (n log n). Once sorted you can lookup values in O (log n). Looking up a value in the sorted array by doing a linear search has lower complexity then sorting the array, but it is inefficient because linear search takes time O (n) and could be done in O (n log n).