斐波那契:
def fun(i):
if i == 0:
return 0
elif i == 1:
return 1
else:
return fun(i-2)+fun(i-1)
if __name__ == '__main__':
for i in range(10):
print(fun(i),end=" ")
直角三角形:
for i in range(6):
i += 1
for j in range(i):
print('*', end='')
print()
等边三角形:
for i in range(1,6):
for j in range(1,6-i):
print(" ",end="")
print("* "*i)
for i in range(1,6):
for j in range(1,6-i):
print(" ",end="")
for k in range(1,i+1):
print("* ",end="")
print("")
选择排序:
def func(alist):
# x就是1到传过来的这个参数的总长度
for x in range(0,len(alist)):
# min_num 就等于每次循环的小标对应数字
min_num = alist[x]
# 循环小标x+1 到所有下标长度
for i in range(x+1,len(alist)):
# 如果下标i的参数大于min_num
if alist[i] < min_num:
# 互换位置(参数互换)
alist[i],min_num = min_num,alist[i]
alist[x] = min_num
return alist
print(func([1,55,22,66,44,22,88]))
冒泡排序:
def func(alist):
for x in range(1,len(alist)): # x 就是 1 到 传过来的这个参数的长度总值
for i in range(0,len(alist)-x): # i 就是 传过来的列表长度 - 去 x
if alist[i] > alist[i+1]: # 如果下标i 小于i+1
alist[i], alist[i+1] = alist[i+1], alist[i] # 那么 下标i 与 下标 i+1 互换位置
return alist # 返回排序后的列表
print(func([1,4,2,3,6,7,8,9,0,5])) # 输出 func([1,4,2,3,6,7,8,9,0,5]) 这句话就是 向func函数中传递参数
二分查找:
def binnry_search(alist,item):
# 构造初始下标和结束下标
first = 0
last = len(alist)-1
# 构造循环比较条件
while first <= last:
# 构造中间值下标
mid = (first+last) // 2
# item (要查找的元素) 和中间值下标对应的元素进行比较 查询到后直接返回值
if item == alist[mid]:
# 返回查询到的值
return True,alist.index(item)
else:
if item > alist[mid]:
first = mid + 1
else:
last = mid - 1
return False
if __name__ == '__main__':
a_list = [-22,-11,0,11,22,33,38,44,55,57,66,72,81,96,123456]
print(binnry_search(a_list,44))
通过迭代查询中间值:
def fun(alist,item):
if len(alist) == 0:
return False
else:
mid = len(alist) // 2 #获取中间值的下标
if item == alist[mid]:
return True,item
elif item < alist[mid]: # 如果查找的数小于中间值
return fun(alist[:mid],item) #从开头到中间值查询 [:mid]是中间值66往前得数
else:
return fun(alist[mid+1:],item) # 否则从中间值下一个数到结尾
# 输出返回的值
print(fun([1, 22,33,44,55,66,77,88,99],66))
二分法:
def func(alist, item):
low = 0
high = len(alist)-1
n = 0
while low <= high:
mid = int((low + high)/2)
n += 1
if alist[mid]==item:
return mid
if alist[mid]<item:
low = mid + 1
else:
high = (mid-1)
return None
m=[1,2,3,4,8,9,11,12,14,18,19,20,28]
print(func(m,14))