zoukankan      html  css  js  c++  java
  • C#二分查找法与拉格朗日查找法

    ※二分查找法

           在指定数组中查找某一元素,传统的查找方法为顺序遍历查找,在数组容量很大时,会消耗很多时间资源;此时二分查找法可以相对快速的查找到指定元素.

    ※拉格朗日查找法

           基于二分查找的一种方法,是二分查找法的优化进阶版

            (注意:二分查找法 和 拉格朗日查找法 适用于数据量较大的情况,但是数据必须先排好顺序。)

    二分查找基本思想:

           1.确定查找范围front=0,end=N-1,计算中项mid=(front+end)/2。
          2.若a[mid]=x或front>=end,则结束查找;否则,向下继续。
          3.若a[mid]<x,说明待查找的元素值只可能在比中项元素大的范围内,则把mid+1的值赋给front,并重新计算mid,转去执行步骤2;
              若a[mid]>x,说明待查找的元素值只可能在比中项元素小的范围内,则把mid-1的值赋给end,并重新计算mid,转去执行步骤2。
     
    二分法     C#代码
     1  public static int BinarySearch(int[] arr, int low, int high, int key)
     2         {
     3             int mid = (low + high) / 2;
     4             if (low > high)
     5                 return -1;
     6             else
     7             {
     8                 if (arr[mid] == key)
     9                     return mid;
    10                 else if (arr[mid] > key)
    11                     return BinarySearch(arr, low, mid - 1, key);
    12                 else
    13                     return BinarySearch(arr, mid + 1, high, key);
    14             }
    15         }

    拉格朗日法  C#代码

     1  public static int LaGeLangRi(int[] nums, int key)
     2         {
     3             int left = 0;
     4             int right = nums.Length - 1;
     5             int middle = 0;
     6             while (left <= right)
     7             {
     8                 middle = left + (right - left) * (key - nums[left]) / (nums[right] - nums[left]);
     9                 if (key == nums[middle]) { break; }
    10                 else if (key > nums[middle]) { left = middle + 1; }
    11                 else { right = middle - 1; }
    12             }            
    13             return middle;
    14         }
  • 相关阅读:
    12306是如何实现高流量高并发的关键技术
    阿里知名工程师
    侵入式和非侵入式的区别
    二叉树节点的最大距离
    2014阿里面经(转)
    jq checkbox的相关操作——全选、反选、获得所有选中的checkbox
    表现和数据分离的好处
    css3完成多边形
    程序员,如何从平庸走向理想?--转载
    js对象和字符串相互转换
  • 原文地址:https://www.cnblogs.com/RainPaint/p/9889514.html
Copyright © 2011-2022 走看看