冒泡排序和sort,sorted排序函数
冒泡排序:
假设对列表a=[6,3,7,2,8,5]中的元素进行从小到大排序:
# 轮数 元素个数 比较次数
# 1 6 5
# 2 5 4
# 3 4 3
# 4 3 2
# 5 2 1
列表有n个元素,则应比较n-1轮,第一轮比较n-1次,第一次将列表的第一个元素和第二个元素相比,如果第一个大于第二个,则两个元素交换位置,将较大的那个排在后面。第二次将第二个元素和第三个元素相比,以此类推,第一轮结束后最大的那个数排到了最后,可以不管了,第二轮只需要比较n-1个数,共比较n-2次,以此类推。故只需写两个for循环,第一个for控制轮数,第二个for控制每轮的次数即可。
a=[6,3,7,2,8,5]
for i in range(len(a)-1): # 轮数
for j in range(len(a)-1-i): # 每轮次数
if a[j]>a[j+1]:
a[j],a[j+1] =a[j+1],a[j]
print(a)
# [2,3,5,6,7,8]
# ***************************************sort和sorted排序函数的用法************************************
# lis = ['This','Is','a','Beautiful','girl']
# lis_1 = [i.lower() for i in lis]
# lis_1.sort(reverse = False) # 无返回值,正序
# lis_2 = sorted(lis_1,key=len,reverse = True) # 有返回值,生成新的列表,按长度倒序排列
# print(lis_1)
# print(lis_2)
# 打印出分数最高的学科
# lis=[]
# a={'语文':118,'数学':125,'英语':96}
# a.keys()
# Out[3]: dict_keys(['语文', '数学', '英语'])
# b=a.keys()
#b[1] # dict_keys 不支持index,但是支持遍历 for i in b:
#max(a.values()) # 求出最大value
# for i in a.keys():
# if a[i]==max(a.values()):
# print('最高分学科是%s,分数是%s'%(i,a[i]))
# print(type(max(a.keys())))
# a={'aa':'118','b':'111','c':'96'}
# print(sorted(a,key=lambda x:a[x]))
# print(sorted(a,key=lambda x:x[0]))
# ['b', 'aa', 'c']
# ['aa', 'b', 'c']