zoukankan      html  css  js  c++  java
  • 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;
                }
                
            }
    

      

  • 相关阅读:
    Flink中的window、watermark和ProcessFunction(三)
    ThreadLocal刨根问底
    Flink的流处理API(二)
    Flink简介(一)
    SparkStreaming
    SparkSQL
    Spark入门
    SparkCore
    【HNOI2009】 最小圈
    【BOI 2002】 双调路径
  • 原文地址:https://www.cnblogs.com/xiaoai123/p/7057559.html
Copyright © 2011-2022 走看看