1. A wear leveling method for a non-volatile memory, wherein the non-volatile memory is substantially divided into a plurality of blocks, and the blocks are grouped into at least a data area, a spare area, a substitute area, and a temporary area, the wear leveling method comprising: (a) selecting the blocks from the spare area according to different purposes; and (b) executing a wear leveling procedure.