1、快速排序:
def quick_sort(arr):
if len(arr) < 2: #当数据集长度为1时,结束递归
return arr
mid = arr[len(arr) // 2] #基准数可以随便选,我这里就对2取整了
left,right = [],[] #申明两个列表用来保存左右分区的数
arr.remove(mid) #将基准数从数组中移除
for i in arr: #比较大小,分左右区
if i > mid:
right.append(i)
else:
left.append(i)
return quick_sort(left)+[mid]+quick_sort(right) #递归分区最后合并
list = [1,6,3,5,2,9,4]
print(quick_sort(list))
以下是运行结果:
2、冒泡排序:
def bubble_sort(items):
for i in range(len(items) - 1): #i为趟数 ,i从0开始
# print(i)
for j in range(len(items) - i - 1): # j为每趟的次数
# print(j)
if items[j] > items[j + 1]:
items[j], items[j + 1] = items[j + 1], items[j]
return items
list = [2,1,9,11,10,8,7]
print(bubble_sort(list))
以下是运行结果
3、函数公式实现斐波那契数列(递归思想)
def fibonacci(n):
if n == 0:
res = 0
elif n == 1:
res = 1
else:
res = fibonacci(n -1) + fibonacci(n -2)
return res
i=0
while i < 9:
print(fibonacci(i))
#while 循环一定要有计数器 不然就是死循环
i += 1
以下为运行结果:
4、n的阶乘
num = int(input("请输入一个整数:"))#此处引号为英文
factorial = 1
if num < 0:
print("错误")
elif num == 0: # 条件双等于,赋值单等于
print(factorial)
else:
for i in range (1,num+1):
factorial = factorial * i
print("%d 的阶乘为 %d" %(num , factorial))
5、比较版本号的大小
def compareVersion(V1, V2):
V1List = V1.split(".") # 以.切割字符串,以列表的形式存在
V2List = V2.split(".")
V1Num = len(V1)
V2Num = len(V2)
if V1 == V2:
print(0)
return
if V1Num > V2Num:
for i in range(V1Num - V2Num):
V2List.append(0)
else:
for i in range(V2Num - V1Num):
V1List.append(0)
for v1, v2 in zip(V1List, V2List):
if int(v1) > int(v2):
print(1)
return
elif int(v1) < int(v2):
print(-1)
return
def main():
compareVersion('1.3.4', '1.3.4')
if __name__ == '__main__':
main()
6、中位数
def middle_sort(L):
L.sort()
if len(L) % 2 == 0:
mid = (L[len(L)//2] + L[len(L)//2-1])/2
print(mid)
else:
mid = L[len(L)//2]
print(mid)
def main():
nums = [1, 2, 5, 6]
middle_sort(nums)
if __name__ == '__main__':
main()
7、求一个字符串中哪一个字符出现的次数最多并且输出这个数
# 求一个字符串中哪一个字符出现的次数最多并且输出这个数
# 利用collections 工具中的Counter,对列表中元素出现的频率进行排序。 Counter返回值是一个按元素出现频率降序排列的Counter对象,它是字典的子类,因此可以使用字典的方法
from collections import Counter
def get_max_char(str):
count = Counter(str)
print(count) # Counter({'a': 3, 'd': 3, 'c': 2, 'k': 2, 'b': 1, 'g': 1, 'j': 1})
v1 = count.most_common(1)[0]
print(v1)
count_list = list(count.values())
print(count_list) # [3, 1, 2, 3, 1, 1, 2]
max_value = max(count_list)
print(max_value)
max_list = []
for k, v in count.items():
if v == max_value:
max_list.append(k)
return max_list
# max_list = sorted(max_list) # 加这个排序的原因是,如果你找到 两个或两个以上的具有相同的频率的字母, 返回那个先出现在字母表中的字母
# return max_list[0]
s = 'abcdacdgjkdka'
print(get_max_char(s))