private HashSet<Integer> quickSort(int topNum){
        List<Map.Entry<Integer,Double>> featureByIG = new ArrayList<Map.Entry<Integer,Double>>(this._IGs.entrySet());
        Collections.sort(featureByIG, new Comparator<Map.Entry<Integer, Double>>() {
            public int compare(Map.Entry<Integer, Double> o1, Map.Entry<Integer, Double> o2) {
                if (o1.getValue() > o2.getValue() )
                    return -1;
                else if (o1.getValue() < o2.getValue() )
                    return 1;
                else
                    return 0;
            }
        });
        HashSet<Integer> featureIDs = new HashSet<Integer>();
        for(int i=0;i<topNum;i++){
            if(i >= featureByIG.size()) break;
            int featureID = featureByIG.get(i).getKey();
            featureIDs.add(featureID);
        }
        return featureIDs;
    }