Python | 有序序列中元素的查找问题解决方法

Posted 算法与编程之美

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Python | 有序序列中元素的查找问题解决方法相关的知识,希望对你有一定的参考价值。

本文首发于微信公众号:"算法与编程之美",欢迎关注,及时了解更多此系列文章。

问题描述

示例:如何查找有序序列中某一的元素

输入:[1,2,3,4,5,6,……,100]   61 #查找的元素

输出:61

解决方案

查找元素。一般地,我们可以用for循环进行遍历,再用if语句进行查找。但是这种方法在面对一个有很多元素的序列时,将会执行很多次,消耗的时间多。 此算法的时间复杂度为O(n)。  

在这里我们可以使用二分查找法。如在[1,2,3,4,…..,100]中查找61。先用50(1—100的中位数)进行比较,因为50比61小,所以1-50的元素就不用进查找(即排除1-50的元素)。再用75(51-100的中位数)进行比较,因为75比61大,所以排除75-100的元素。再用62(51-74的中位数)进行比较,因为62比61大,所以忽略62-75的元素。然后反复地用这个方法排除多余的元素,直到剩下一个元素(61 需要查找的元素),执行了7次。此算法的时间复杂度为O(n)。

 

def my_func(my_list, searched_number):  #二分法

    start_number_index = 0

    end_number_index = len(my_list) - 1

  

以上是关于Python | 有序序列中元素的查找问题解决方法的主要内容,如果未能解决你的问题,请参考以下文章

二分查找算法(Python版)

Search in Rotated Sorted Array, 查找反转有序序列。利用二分查找的思想。反转序列。

二分查找算法(Python)

二分查找算法(Python)

二分查找法

怎么查找python列表中元素的位置