docs: public Cluster startClustering() {
  
  
  
  //		int[] idx = MyCollection.sort(wordProb);
  		wordProb.remove(-1);
  		wordProb.remove(-2);
  
  		int[] idx = MyHashSparseArrays.trim(wordProb, ENERGY);
  
  		int mergeCount  = idx.length;
  		int remainCount  = idx.length;
  		
  		System.out.println("[待合并个数：]\t" +mergeCount );
  		System.out.println("[总个数：]\t" + totalword);
  		
  		int round;
  		for (round = 0; round< Math.min(slotsize,mergeCount); round++) {
  			slots.add(idx[round]);
  			System.out.println(round + "\t" + alpahbet.lookupString(idx[round]) + "\t" + slots.size());
  
  		}
  		TIntIterator it1 = slots.iterator();
  
  		while(it1.hasNext()){
  			int i = it1.next();
  			TIntIterator it2 = slots.iterator();
  			while(it2.hasNext()){
  				int j= it2.next();
  				if(i>j)
  					continue;
  				weight(i, j);
  			}
  		}
  		
  		while (slots.size()>1) {
  			if(round < mergeCount)
  				System.out.println(round + "\t" + alpahbet.lookupString(idx[round]) + "\tSize:\t" +slots.size());
  			else
  				System.out.println(round + "\t" + "\tSize:\t" +slots.size());
  			System.out.println("[待合并个数：]\t" + remainCount-- );
  			long starttime = System.currentTimeMillis();
  			mergeCluster();
  			long endtime = System.currentTimeMillis();
  			System.out.println("\tTime:\t" + (endtime-starttime)/1000.0);
  			if(round < mergeCount){
  				int id = idx[round];
  				slots.add(id);
  				TIntIterator it = slots.iterator();
  				while(it.hasNext()){
  					int j= it.next();
  					weight(j, id);
  				}
  			}else{
  				if(!meger )
  					return null;
  			}
  			try {
  				saveTxt("../tmp/res-"+round);
  			} catch (Exception e) {
  				// TODO Auto-generated catch block
  				e.printStackTrace();
  			}
  			round++;
  		}
  
  		return clusters.get(slots.toArray()[0]);
  		
  
  	}