1. A memory controller for accessing a memory having a plurality of physical blocks based on a host address provided from a host computer, comprising: means for dividing the physical blocks into a plurality of groups; means for forming a plurality of virtual blocks by virtually combining a plurality of physical blocks each of which belongs to different groups, the virtual blocks can be divided into at least a first class and a second class; and means for assigning adjacent host addresses to different physical blocks belonging to the same virtual block of the first class and assigning adjacent host addresses to the same physical blocks belonging to the same virtual block of the second class.