1、手写排序算法
loop_count = 0
def f1():
'''手写冒泡排序
1、元素之间两两比较;大的在前,小的在后
2、重复第一个步骤
问题:要循环几次的比较?
'''
l = [13,5,16,8,2,14,21,0,9]#O(n2)
loop_count = 0
for j in range(len(l)):
for i in range(len(l)-1 - j ):
loop_count+=1
a , b = l[i] , l[i+1]
if a >= b:
pass
else:
l[i] , l[i+1] = b , a
print(f'一共循环了{loop_count }次')
# l.sort(reverse=True) #python自带的排序
# retrun l
print(f1())
快速排序 ---时间复杂度低
冒泡排序 ----空间复杂度低
插入排序。。。。
算法复杂度:时间复杂度 空间复杂度
2、找出重复次数最多的元素
def f2():
"""思路:
1、统计各个元素出现的次数
2、对结果排序,取最大值
"""
l = [1, 2, 3, 4, 5, 6, 7, 1, 1, 1, 1, 3, 4, 5, 5, 6, 7, 8, 9, 90, 6]
d = {} # 统计各个元素出现的次数
for i in l:
d.setdefault(i, 0)
d[i] += 1
new_l = list(d.items())
new_l.sort(key=lambda x: x[1])
print(new_l)
return new_l[-1][-1]
f2()
3、有一个期望的json串,如何用算法写出实际返回的json串与期望的json串中所有不同的key跟value
def f3():
"""
思路:
1、预期和实际是否相等?
2、能不能找到具体不同的key
3、能不能根据key找到value
:return:
json定义是什么?
[1,2,3,4]是json?
[1,2,3,4,[1,2,3,34]]是json?
{"name": "kally", "age": {"name": "kally", "age": 21}}
"""
json_1 = """{"name": "kally", "age": 21} """ # 期望
json_2 = """ { "age": 21,"name": "libaobao"} """ # 实际
# 字符串对比不科学,位置调换,就会有问题
# assert json_1 == json_2
# 先转成字典 字典本质 map
json_1_obj = json.loads(json_1)
json_2_obj = json.loads(json_2)
# 断言方式判断
# assert json_1_obj == json_2_obj
# 先做类型判断,坑在类型判段这里!!!!!!!!
for key in json_1_obj:
if json_1_obj[key] != json_2_obj[key]:
print(key, ":", json_2_obj[key])
f3()