在之前面试中,碰到好几家。让写个冒泡排序出来,这边就稍微写一下
列表冒泡排序
1、数字冒泡排序:
list1 =[2213,123,4,112,3,331,3214]
for i in range(len(list1)-1):
for j in range(len(list1)-(i+1)):
if list1[j] > list1[j+1]:
#如果前面的数比后面大,则前后两个数对调位置
list1[j],list1[j+1] = list1[j+1],list1[j]
print(list1)
2、字符串比长度冒泡排序:
list2 =["Sadasfa",'sdas','sdsa2f','ss','a','ffafafsf']
for i in range(len(list2)-1):
for j in range(len(list2)-(i+1)):
if len(list2[j]) > len(list2[j+1]):
#如果前面的字符串长度比后面长,则前后两个字符串对调位置
list2[j],list2[j+1] = list2[j+1],list2[j]
print(list2)
3.列表中元组冒泡排序:
list1 = [("Sadasfa",'sdas','sdsa2f','ss','a','ffafafsf'),22,321,1,("aaeqweqw",'dssqa','saew1','sda','2sdgfd')]
for i in list1:
if type(i) == tuple:
a=list(i)#先将元组转换成列表,因为元组数据不可变
for j in range(len(a)-1):
for b in range(len(a)-(j+1)):
if len(a[b]) > len(a[b+1]):
#如果前面的字符串长度比后面长,则前后两个字符串对调位置
a[b],a[b+1]=a[b+1],a[b]
print(a)
a = tuple(a)#冒泡完之后再讲列表转换回元组
print(a)
如果想要降序冒泡,把 “>” 改成 “<” 就可以了。