首页 > 其他 > 详细

二分查找法&大O表示法

时间:2019-03-29 20:02:59      阅读:231      评论:0      收藏:0      [点我收藏+]

二分查找法的输入是一个有序的元素列表,如果要查找的元素包含在列表中,二分查找返回其位置,否则返回null

Python代码(来源于《算法图解》一书):

def binary_search(list, item):
    low = 0
    high = len(list)-1
    while low <= high:
        mid = (low + high)//2
        guess = list[mid]
        if guess == item:
            return mid
        if guess < item:
            low = mid + 1
        else:
            high = mid - 1
    return None

测试:

>>>binary_search(my_list, 3)
            
1

C#代码(因为我平时多用C#):

namespace Algorithms
{
    public static class BinarySearch
    {
        public static int Binary_Search(List<double>list, double item)
        {
            int low = 0;
            int high = list.Count - 1;
            while(low <= high)
            {
                int mid = (low + high) / 2;
                double guess = list[mid];
                if (guess == item)
                    return mid;
                else if (guess < item)
                    low = mid + 1;
                else
                    high = mid - 1;
            }
            return -1;
        }
    }
}

大O表示法:

用于表示算法的速度有多快。O(n),n表示最糟的情况下的操作数。5种经常遇到的大O运行时间。

  • O(log n) 对数时间,比如二分法;
  • O(n) 线性时间,比如简单查找;
  • O(n*log n) 包括快速排序法(后面说);
  • O(n^2) 选择排序
  • O(n!) 旅行商问题的解决方案。

二分查找法&大O表示法

原文:https://www.cnblogs.com/larissa-0464/p/10623403.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!