C#二分查找法 破洞百出版本

二分查找法在数据繁多的数据中查找是一种快速的方法,每次查找最多需要的次数

为2的n次方小于总个数。

当然是有前提的,就是需要把数据先排好序,这里指的都是数值型的数据。

基本思想就是把需要找的值与排序好数组的中间值比较,这里的中间值不是指大小,而是指顺序,

如果比中间值大,则就把前面的部分去掉,接下来只与后面剩余的部分比较,

如果比中间值小,则就把后面的部分去掉,接下来只与前面剩余的部分比较。

如何反复比较,这样就能快速找到所需要的值。这也是最多需要寻找次数的依据。

所以这也涉及到递归的使用。

下面是非常简单的例子,还有很多的bug,主要是表达一个思路,例子主要是用来找出指定值的索引。

            int[] a = { 1, 6, 3, 55, 77, 46, 67, 7, 98, 87, 88 };
            Array.Sort<int>(a);
            for (int i = 0; i < a.Length; i++)
            {
                textBox1.AppendText(a[i].ToString()+" ");
            }
          MessageBox.Show(getIndex(a, 0, a.Length, 46).ToString());




        private int getIndex(int[] a,int start,int end,int num)
        {
            if (a[(start + end) / 2] < num)
            {
              return  getIndex(a, start, (start + end) / 2, num);
            }

            else if (a[(start + end) / 2] < num)
            {
            return    getIndex(a, (start + end) / 2, end, num);
            }
            else
            {
            return (start+end)/2;
            }
            
        }

  

原文地址:https://www.cnblogs.com/xiaoai123/p/7057559.html