二分查找
def binary_search(arr,item):
low=0
high=len(arr)-1
while low<=high:
mid=(low+high)//2
guess=arr[mid]
if(guess==item):
return mid
elif(guess<item):
low=mid+1
else:
high=mid-1
return "没有找到该元素'
- 二分查找要求元素有序
- 通过大O表示其运行时间O(log n)
常见的大O运行时间
- O(log n) 对数时间 代表算法:二分查找
- O(n) 线性时间 代表算法:简答查找
- O(n*log n) 代表算法:快速排序
- O(n*n) 代表算法:选择排序
- O(n!) 代表算法:旅行商问题
递归获取列表最大元素
def maxElem(list):
if len(list)==1:
return list[0]
else:
if list[0]>maxElem(list[1:]):
return list[0]
else:
return maxElem(list[1:])
快速排序实现
def FastSort(list_in):
# 基线条件:列表(数组)的元素小于2时无需排序
if(len(list_in)<2):
return list_in
else:
#递归条件:列表(数组)元素大于2时,找到一个参考值(一般为数组第一个元素)
#将原有列表分为两个子列表,第一个列表元素都小于等于参考值,第二个列表元素都大于参考值
base=list_in[0]
smaller=[]
bigger=[]
for i in list_in[1:]:
if(i<=base):
smaller.append(i)
else:
bigger.append(i)
return quicksort(smaller)+[base]+quicksort(bigger)