Three clustering algorithms and their application to microarray data