• 二分查找与三分查找算法 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;
            }

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

  • 相关阅读:
    javascript使用jQuery加载CSV文件+ajax关闭异步
    流媒体服务器+EasyDarwin+EasyPusher+VLC+Red5+OBS+Unity+RTSP+RTMP+FFMPEG
    C#中的垃圾回收机制与delegate
    C#调用DLL报“试图加载格式不正确的程序”
    VS2017编译Poco1.9.0的64版本
    在线生成Cron表达式
    com.alibaba.fastjson.JSONException: For input string: "8200-12-31"
    spring定时任务
    org.springframework.jdbc.CannotGetJdbcConnectionException: Could not get JDBC Connection
    主键和索引
  • 原文地址:https://www.cnblogs.com/zhangchenliang/p/2081018.html
Copyright © 2020-2023  润新知