回顾基础算法,会有不同的收获
Posted 啊~小 l i
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了回顾基础算法,会有不同的收获相关的知识,希望对你有一定的参考价值。
冒泡排序
from random import randint
def maopao(lst):
flag = False
for i in range(len(lst)):
if i+1<len(lst) and lst[i]>lst[i+1]:
lst[i],lst[i+1] = lst[i+1],lst[i]
flag = True
return flag,lst
if __name__ == '__main__':
l = [randint(1,101) for i in range(10)]
flag = True
while flag:
flag, l = maopao(l)
if not flag:
break
else:
flag, l = maopao(l)
print(l)
选择排序
from random import randint
def xuanze(lst):
tep = 0
for i in range(len(lst)):
m = tep
for i in range(tep,len(lst)):
if lst[tep] > lst[i] and lst[m]>lst[i]:
m = i
lst[m],lst[tep] = lst[tep],lst[m]
tep = tep+1
return lst
if __name__ == '__main__':
l = [randint(1,101) for i in range(10)]
print(xuanze(l))
二分法查找
from random import randint
def erfenfa(lst,a):
start = 0
lens = len(lst)-1
while start <= lens:
if a < lst[(start+lens)//2]: # 11 12
lens = (start+lens)//2-1
elif a > lst[(start+lens)//2]:
start = (start+lens)//2+1
elif a == lst[(start+lens)//2]:
print(lst[(start+lens)//2])
break
else:
print("没有找到!")
if __name__ == "__main__":
lst = [randint(1,101) for i in range(20)]
lst = list(set(lst))
lst.sort()
erfenfa(lst,lst[len(lst)-1])
以上是关于回顾基础算法,会有不同的收获的主要内容,如果未能解决你的问题,请参考以下文章