The channel assignment problem (CAP) in a cellular network requires finding a channel assignment to the call requests from cells such that three types of interference constraints are not only satisfied, but also the number of channels (channel span) is minimized. This paper presents a three-stage iterative algorithm, called the Quasi-solution state evolution algorithm for CAP (QCAP). QCAP evolutes quasi-solution states where a subset of call requests is assigned channels and no more request can be satisfied without violating the constraint. The first stage computes the lower bound on the channel span. After the second stage greedily generates an initial quasi-solution state, the third stage evolutes them for a feasible solution by iteratively generating best neighborhoods, with help of the dynamic state jump and the gradual span expansion for global convergence. The performance is evaluated through solving benchmark instances in literature, where QCAP always finds the optimum or near-optimum solution in very short time.