In this paper, we propose an evolution game based spectrum allocation algorithm for cognitive radio networks, where primary users lease their spare spectrum to secondary users. In the proposed algorithm, behaviors of the secondary user can be modeled as an evolution game problem. A secondary user from a group compares its utility with the group's average utility and applies to rent the spectrum from another primary user when its utility is lower than the group's average utility; namely, the secondary user makes an evolution. The evolution will not end until the secondary user's network utility is equal to the group's average utility. Primary users obtain their optimal utilities through price competition with each other. Through simulations, we demonstrate that the proposed algorithm is feasible, and outperforms at both primary user's equilibrium price and utility.