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         }
  • 相关阅读:
    教你用笔记本破解无线路由器password
    Android项目外接高德地图代码混淆注意事项
    notepad++ 配置笔记
    ORACLE11.2.0 SQLPLUS 报 error while loading shared libraries
    【Lucene4.8教程之三】搜索
    《Swift Programming Language 》——Swift中怎样使用继承(Inheritance)
    CreateProcess的使用方法
    ntoskrnl.exe损坏或丢失的解决方式
    POI读入excel文件到Java中
    稀疏表示
  • 原文地址:https://www.cnblogs.com/RainPaint/p/9889514.html
Copyright © 2011-2022 走看看