算法之二分查找

排序算法

二分查找

用于有序元素列表的查找
性能:

时间复杂度 空间复杂度
O (log n )
  • Python实现:
def binary_search(list, item):
   '''二分查找 
    list:数组列表
    item:要查询的值    
    '''
    num=0
    low_index = 0 
    high_index = len(list)-1
    while low_index <= high_index: 
        num+=1
        mid = (low_index + high_index)//2
        guess = list[mid]
        if guess == item: 
            return "的索引为"+str(mid)+",查询次数为"+str(num)
        if guess > item: 
            high_index = mid - 1
        else: 
            low_index = mid + 1

    return "值在数组中不存在,查询次数为"+str(num) 
  • C#实现
        /// <summary>
        /// 二分查找每个数
        /// </summary>
        /// <returns></returns>
        public static string Binary_search(int[] list, int item)
        {           
            var num = 0;
            var low_index = 0;
            var high_index = list.Length - 1;
            while (low_index <= high_index) 
            {
                num += 1;
                var mid = (low_index + high_index)/2;
                var guess = list[mid];
                if (guess == item)
                {
                    return $"的索引为{mid}查询次数为{num}";
                }
                else if (guess > item)
                {
                    high_index = mid - 1;
                }
                else
                {
                    low_index = mid + 1;
                }
            }
            return $"值在数组中不存在,查询次数为{num}";
        }
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 简述: 从这篇文章起就会开启另一个系列就是上篇文章中提到的每周学习一个基本算法,会结合LeetCode上题目来做分...
    熊喵先森阅读 759评论 0 0
  • 二分查找概念: 二分查找又称折半查找,优点是比较次数少,查找速度快,平均性能好;其缺点是要求带查表为有序表,且插入...
    Fwwwddd阅读 418评论 0 0
  • 二分查找 二分查找是著名、高效并有应用广泛的查找算法。 二分常规实现 1.循环实现 下面我用python语言实现循...
    但时间也偷换概念阅读 667评论 0 1
  • 二分查找 假设要在电话簿中找一个名字以K打头的人,(现在谁还用电话簿!)可以从头开始翻页,直到进入以K打头的部分。...
    非问阅读 259评论 0 0
  • 二分查找又称折半查找,它是一种效率较高的查找方法。、折半查找的算法思想:、将数列按有序化(递增或递减)排列,进行折...
    辞令阅读 285评论 0 0