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 = 0end_number_index = len(my_list) - 1while start_number_index <= end_number_index:mid_number_index = (start_number_index + end_number_index) // 2mid_number = my_list[mid_number_index]if mid_number < searched_number:start_number_index = mid_number_index + 1elif mid_number > searched_number:end_number_index = mid_number_index - 1else:return '找到了需要查找的数字%d' % searched_numbermy_list = list(range(1,101))searched_number = 61print(my_func(my_list, mid_number))# 结果 找到了需要查找的数字 61结语有序序列中元素的查找有两种方法:一是用for循环进行遍历查找。二是用二分法进行查找。实习编辑:李欣容作者:成浩宇、敖泳、潘钰昆稿件来源:深度学习与文旅应用实验室(DLETA)