龙空技术网

Python版的迷你程序——二分搜索

chenleiyfk 137

前言:

目前大家对“pythonlei”大体比较关怀,朋友们都想要学习一些“pythonlei”的相关内容。那么小编同时在网络上搜集了一些有关“pythonlei””的相关资讯,希望同学们能喜欢,朋友们一起来学习一下吧!

二分搜索也称折半搜索(Binary Search),它是一种效率较高的查找和搜索方法。但是要求线性表必须采用顺序存储结构。

假设数组的话,意即二分搜索必须在有序数组中去查找某一特定元素。搜索过程从数组的中间元素开始,如果中间元素正好是要查找的元素,则搜索过程结束;如果某一特定元素大于或者小于中间元素,则在数组大于或小于中间元素的那一半中查找,而且跟开始一样从中间元素开始比较。如果在某一步骤数组为空,则代表找不到。这种搜索算法每一次比较都使搜索范围缩小一半。

#!/usr/bin/env python3# -*- coding: UTF-8 -*-#import randomdef BinarySearch (arr, l, r, x):     if r >= l:           mid = l + (r-l)//2        if x == arr[mid] :             return mid         elif x < arr[mid] :             return BinarySearch(arr, l, mid-1, x)         else:             return BinarySearch(arr, mid+1, r, x)     else:         return -1arr=[]arrlen=16for i in range(arrlen):    arr.append(random.randint(0,arrlen*2))arr.sort(key=None, reverse=False)x = random.randint(0,arrlen)print ("在数组中:", end=" ")print (arr)print ("搜索元素:", end=" ")print (x)result = BinarySearch(arr, 0, len(arr)-1, x)   if result != -1:     print ("搜索元素在数组中的索引为 %d" % result )    print ("arr[%d] 为 %d" % (result, arr[result]))else:     print ("元素不在数组中!!!")

标签: #pythonlei