你是说一个txt里有很多个字符串,用要折半法找某个特定的字符串?
那把所有的字符串读到一个数组,再用折半法找就ok了,折半法随便找本数据结构或算法书应该都有

解决方案 »

  1.   

    读取文件,然后执行查找,要是我就全部读到一个STRING ,然后查找,折半不会用
      

  2.   

    将源代码帖下来,虽然不是最佳,但也算是方法之一吧!呵呵!
    希望对别的新手有所帮助!!!
    private void button1_Click(object sender, EventArgs e)
    {
        string temp;
        string bar;
        string name;
        ArrayList al = new ArrayList();    StreamReader sr = new treamReader("d:\\in.txt",Encoding.GetEncoding("gb2312"));
        byte[] bwrite;
        while (sr.Peek() != -1)
        {
            temp = sr.ReadLine();
            al.Add(temp);
        }
        sr.Close();
        string t = half_search(al, textBox1.Text);
        label1.Text = textBox1.Text;
        label2.Text = t;
    }
    public string search(ArrayList al,string str) 
    {
        int low = 0,high, mid,m;
        byte[] b;    high = al.Count;
        while (low <= high) 
        { 
             mid = (low + high) / 2;
             m = string.Compare(str,al[mid].ToString().Substring(0,20).Trim());
             if (m == 0)
             {
                 b =  Encoding.GetEncoding("gb2312").GetBytes(al[mid].ToString().ToCharArray());
                 string name = Encoding.Default.GetString(b, 20, 30);
                 return name.Trim();
             }
             else
             {
                 if (m < 0)
                 {
                     high = mid - 1;
                 }
                 else
                 {
                     low = mid + 1;
                 }
             }
         }
         return "没有找到数据";
    }