コード例 #1
0
ファイル: GlyphNode.cs プロジェクト: xwyangjshb/qizmt
        public GlyphNode FindWord(GlyphNode current, IList <byte> word, int keyoffset, int keylength)
        {
            SearchState pSearchState = SearchState.MIDDLE;

            for (int i = 0; i < keylength; i++)
            {
                byte curGlyph = word[keyoffset + i];
                if (pSearchState == SearchState.LOW)
                {
                    current = current.child_glyphs[0];
                }
                else if (pSearchState == SearchState.HIGH)
                {
                    current = current.child_glyphs[current.child_glyphs.Count - 1];
                }
                else
                {
                    if (null == current.child_glyphs)
                    {
                        return(current);
                    }
                    current = current.SelectChild(curGlyph);
                    if (curGlyph > current.Glyph)
                    {
                        pSearchState = SearchState.HIGH;
                    }
                    else if (curGlyph < current.Glyph)
                    {
                        pSearchState = SearchState.LOW;
                    }
                }
            }
            return(current);
        }
コード例 #2
0
ファイル: GlyphNode.cs プロジェクト: erisonliang/qizmt
 public GlyphNode FindWord(GlyphNode current, IList<byte> word, int keyoffset, int keylength)
 {
     SearchState pSearchState = SearchState.MIDDLE;
     for (int i = 0; i < keylength; i++)
     {
         byte curGlyph = word[keyoffset + i];
         if (pSearchState == SearchState.LOW)
         {
             current = current.child_glyphs[0];
         }
         else if (pSearchState == SearchState.HIGH)
         {
             current = current.child_glyphs[current.child_glyphs.Count - 1];
         }
         else
         {
             if (null == current.child_glyphs)
             {
                 return current;
             }
             current = current.SelectChild(curGlyph);
             if (curGlyph > current.Glyph)
             {
                 pSearchState = SearchState.HIGH;
             }
             else if (curGlyph < current.Glyph)
             {
                 pSearchState = SearchState.LOW;
             }
         }
     }
     return current;
 }