zoukankan      html  css  js  c++  java
  • 二分查找与三分查找算法 C#

    首先是二分查找法,时间复杂度O(2log2(n)):

            static bool Find(int[] sortedArray, int number)
            {
                if (sortedArray.Length == 0)
                    return false;

                int start = 0;
                int end = sortedArray.Length - 1;

                while (end >= start)
                {
                    int middle = (start + end) / 2;
                    if (sortedArray[middle] < number)
                        start = middle + 1;
                    else if (sortedArray[middle] > number)
                        end = middle - 1;
                    else
                        return true;
                }
                return false;
            }

    然后是三分查找算法,时间复杂度O(3log3(n)):

           static bool Find(int[] sortedArray, int number)
            {
                if (sortedArray.Length == 0)
                    return false;

                int start = 0;
                int end = sortedArray.Length - 1;

                while (end >= start)
                {
                    int firstMiddle = (end - start) / 3 + start;
                    int secondMiddle = end - (end - start) / 3;
                    if (sortedArray[firstMiddle] > number)
                        end = firstMiddle - 1;
                    else if (sortedArray[secondMiddle] < number)
                        start = secondMiddle + 1;
                    else if (sortedArray[firstMiddle] != number && sortedArray[secondMiddle] != number)
                    {
                        end = secondMiddle - 1;
                        start = firstMiddle + 1;
                    }
                    else
                        return true;
                }
                return false;
            }

    对比可以发现,三分查找算法的时间复杂度要比二分查找算法的时间复杂度低,但是实际上效率并没有二分查找算法高,因此我们不能过于迷信一个算法的时间复杂度。

  • 相关阅读:
    024.Kubernetes掌握Pod-部署MongoDB
    023.Kubernetes掌握Pod-Pod扩容和缩容
    附010.Kubernetes永久存储之GlusterFS超融合部署
    附009.Kubernetes永久存储之GlusterFS独立部署
    022.Kubernetes掌握Pod-Pod升级和回滚
    021.Kubernetes掌握Pod-Pod调度策略
    020.Kubernetes掌握Pod-Pod基础使用
    018.Kubernetes二进制集群插件metrics-dashboard
    016.Kubernetes二进制集群插件coredns
    .NET Core 3.0之深入源码理解ObjectPool(二)
  • 原文地址:https://www.cnblogs.com/zhangchenliang/p/2081018.html
Copyright © 2011-2022 走看看