Python算法
递归
程序本身自己调用自己称之为递归,类似于俄罗斯套娃,体现在代码中:用户执行最外(N)层函数,最外侧调用N-1层函数,N-1层函数调用N-2层函数...

利用函数编写如下数列:
斐波那契数列指的是这样一个数列 0, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144, 233,377,610,987,1597,2584,4181,6765,10946,17711,28657,46368
递归方式实现斐波那契数列前20项:
def func(n):
lis = []
for i in range(n):
if i == 0 or i == 1: # 第1,2项都为1
lis.append(1)
else:
lis.append(lis[i - 2] + lis[i - 1]) # 从第3项开始每项值为前两项之和
return lis
print(func(20))
递归方式实现斐波那契数列小于1000的最后一项:
lis = [0, 1]
def func(n):
a = 0
b = 1
while b < n:
a, b = b, a + b
lis.append(b)
print(lis)
return a
print(func(1000))
冒泡排序
冒泡排序是排序中经典排序之一,它利用相邻元素比较并进行位置的互换...

需求:请按照从小到大对列表 [13, 22, 6, 99, 11] 进行排序
思路:相邻两个值进行比较,将较大的值放在右侧,依次比较!
li = [13, 22, 6, 99, 11]
for i in range(1, len(li)):
for m in range(len(li) - i):
if li[m] > li[m + 1]:
temp = li[m + 1]
li[m + 1] = li[m]
li[m] = temp
print(li)
选择排序
选择排序,顾名思义先 创建一个特殊的变量:
- 选择第一个值的索引赋值给特殊变量,然后循环其他索引并进行值的比较,如果特殊变量对应的值 > 循环的值,那么将当前值的索引放入变量中,继续向后比较
- 选择第二个值的索引赋值给特殊变量,...
- ...
def select_sort(args):
"""
选择排序
:param args: 要进行排序的列表
:return: 排序之后的列表
"""
for j in range(0, len(args) - 1):
min_val_index = j
for i in range(j + 1, len(args)):
if args[i] < args[min_val_index]:
min_val_index = i
temp = args[min_val_index]
args[min_val_index] = args[j]
args[j] = temp
return args
lis = [10, 77, 12, 43, 88, 1, 8, 8, 2, 3, 6]
result = select_sort(lis)
print(result)
插入排序
插入排序有两个特点:
- 从前向后两两比较
- 永远保证左边是有序的
其实插入排序就是维护一个有序的序列,并且有一个人在不停的抛出新的值,然后有序的序列开始去检测新值,将其添加到有序序列中的合法位置。
def insert_sort(args):
"""
插入排序
:param args: 要排序的列表
:return: 排序成功后的列表
"""
for i in range(1, len(args)):
for j in range(i - 1, -1, -1):
if args[j] > args[j + 1]:
temp = args[j]
args[j] = args[j + 1]
args[j + 1] = temp
else:
break
return args
print(insert_sort([1, 2, 3]))

浙公网安备 33010602011771号