文章目录
冒泡排序
def sort_mao(arr):
'''冒泡排序(从高到低)'''
for i in range(0,len(arr)-1):
for j in range(0,len(arr)-i-1):
if arr[j]>arr[j+1]:
arr[j],arr[j+1] = arr[j+1],arr[j]
选择排序
def sort_xuan(arr):
'''选择排序'''
for i in range(0,len(arr)-1):
min = arr[i]
min_where = i
for j in range(i+1,len(arr)):
if arr[j] < min:
min = arr[j]
min_where = j
arr[i],arr[min_where] = arr[min_where],arr[i]
二分查找
1).不用递归的方法
def search_no(arr,aim):
'''非递归的二分查找'''
start=0
end=len(arr)
while start<=end:
#这里的(start+end)/2要用int限定,否则自动为float型,会报错哦
mid=int((start+end)/2)
if(arr[mid] == aim):
return mid
elif(arr[mid]>aim):
end = mid-1
continue
else:
start = mid+1
continue
return False #如果start>end说明没找到,就返回False
2).用递归的方法
特别注意:在python中函数调用函数的时候,被调用的函数前面要加return,否则只会返回None,python中的递归过程参考:python 递归函数返回值
def search_yes(arr,aim,start,end):
'''递归的二分查找'''
mid = int((start+end)/2)
if(start>end):
return -1
elif(arr[mid]==aim):
return mid
elif(arr[mid]>aim):
#此处必须写return 否则总会返回None(血的教训o(╥﹏╥)o)
return search_yes(arr,aim,start,mid-1)
else:
return search_yes(arr,aim,mid+1,end)