Finding best algorithmic components for clustering microarray data