二分法:
优点是查找速度快,但是仅当列表是有序的时候,二分查找才有用;
def two(list,n)
low=0
high=len(list)-1
while low>=high
mid=(low+high)//2
m=list[mid]
if m==n:
return mid
elsifm<n:
low=mid+1
else:
high=mid-1
return None
选择排序法:
在数组中选出最大(或者最小)的值,排最前面;
#O(n**2)
def low(arr):
lowest=0
arrlow=arr[0]
for i1 in range(1,len(arr)):
if arr[i1] < arrlow:
arrlow=arr[i1]
lowest=i1
return lowest
def sor(arr):
new_arr=[]
for i in range(len(arr)):
smaller=low(arr)
new_arr.append(arr.pop(smaller)) #.append()给在列表尾填加内容,.pop()弹出该位置的内容
return new_arr
print(sor([3,2,9,6,4]))
递归:
自己调用自己的函数;
#递归叠加
def ad(lis):
if lis==[]:
return 0
else:
return lis.pop(0)+ad(lis)
#递归求最大值
def ma(lis):
m=lis[0]
if len(lis) ==1:
return m
else:
tmp=ma(lis[1:])
if tmp > m:
m=tmp
return m
快速排序:
分而治之:
找出基线条件,这种条件必须尽可能简单。
不断将问题分解(或者说缩小规模),直到符合基线条件;
浙公网安备 33010602011771号