Energy-heterogeneous is unavoidable for wireless sensor networks when communicating. An improved novel clustering algorithm for wireless sensor networks is proposed to adapt for energy-heterogeneous environments, and to solve the problem of imbalance in energy load for whole network. In the algorithm, the relative estimation factor of nodes’ current energy level which can make higher energy nodes become cluster heads easier. When communicating between different clusters it will chose single hop or multi hop according to the communication costs. Lower energy clusters will not retransmission other clusters’ data to balance the energy load. The result of simulation shows that the algorithm has been improved greatly and the energy load for whole network is more balanced.