常用算法
快排
def quicksort(lis):
if len(lis) < 2:
return lis
else:
numb = lis[0]
left_list = [i for i in lis[1:] if i <= numb]
right_list = [i for i in lis[1:] if i > numb]
final_list = quicksort(left_list) + [numb] + quicksort(right_list)
return final_list
quick_list = quicksort([6,3,5,87,69,52,4,16])
print(quick_list)
二分法查找
lis = [3, 4, 5, 6, 16, 52, 69, 87, 95]
def search(lis,item):
left = 0
right = len(lis)-1
while right-left >= 0:
middle = (right+left) // 2
if item > lis[middle]:
left = middle + 1
elif item < lis[middle]:
right = middle -1
else :
return middle
选择排序
def choice_sort(lis):
min = 0
min_value = lis[0]
for i in range(1,len(lis)):
if min_value >= lis[i]:
min = i
min_value = lis[i]
return min
def app_list(list):
new_list = []
for i in range(len(list)):
new_list.append(list.pop(choice_sort(list)))
return new_list
print(app_list([6,3,5,87,69,52,4,16]))
冒泡排序
def maopao(lis):
n = len(lis) - 1
while n :
i = 0
while i < n:
if lis[i] > lis[i+1]:
lis[i],lis[i+1] = lis[i+1],lis[i]
i += 1
n -= 1
return lis
print(maopao([6,3,5,87,69,52,4,16]))
浙公网安备 33010602011771号