ICTCLAS 2分法查询词典库

来源:互联网 发布:矩阵的协方差怎么求 编辑:程序博客网 时间:2024/05/18 21:06

今天学习了二分法查询词典库,现将代码粘贴如下:

public int findInOriginalTable(int index, String res, int handle) {        int result = -1;        if (res != null && wts != null) {            WordTable wt = wts.get(index);            if (wt != null && wt.getCount() > 0) {                int start = 0;                int end = wt.getCount() - 1;                int mid = (end + start) / 2;                ArrayList<WordItem> wis = wt.getWords();                while (start <= end) {                    WordItem wi = wis.get(mid);                    int cmpValue = GFString.compareTo(wi.getWord(), res);//词典中的相对位置                    if (cmpValue == 0 && (wi.getHandle() == handle || handle == -1)) {//1                        if (handle == -1) {                            while (mid >= 0 && res.compareTo(wis.get(mid).getWord()) == 0) {                                mid--;                            }                            if (mid < 0 || res.compareTo(wis.get(mid).getWord()) != 0)                                mid++;                        }                        result = mid;                        return result;                    } else if (cmpValue < 0 || cmpValue == 0 && wi.getHandle() < handle && handle != -1)//2                        start = mid + 1;                    else if (cmpValue > 0 || cmpValue == 0 && wi.getHandle() > handle && handle != -1)//3                        end = mid - 1;                    mid = (start + end) / 2;                }            }        }        return result;    }


在这里我想说的不是2分法的实现,我是想说方法中的几种情况如上图代码中1,2,3所在位置,我在思考除了这几种情况外是否还有其他的情况,显然是有的如:

(1) if (cmpValue < 0 || cmpValue == 0 && wi.getHandle() > handle && handle != -1)   

(2)if (cmpValue > 0 || cmpValue == 0 && wi.getHandle() < handle && handle != -1)

那么现在讨论这种情况,解释下为什么这种情况没有在代码中出现:

自己臆想的这么认为当cmpValue<0时也就是词典中的词的顺序在所要查词的前面,而   wi.getHandle() > handle所隐含表示的是词典中的词的顺序在所要查词的后面,应该是相互矛盾。所以这种情况不存在 。在开始读到此处时,感觉从少了点什么。当看到如下图时才知道是这样的,自己又确定了不少,真心的希望各位大猿们给予建议.

如果想更好地了解此方面知识:http://www.cnblogs.com/zhenyulu/articles/668024.html

原创粉丝点击