冒泡排序:
冒泡排序(英语:Bubble Sort)是一种简单的排序算法。
它重复地遍历要排序的数列,一次比较两个元素,如果他们的顺序错误就把他们交换过来。遍历数列的工作是重复地进行直到没有再需要交换,也就是说该数列已经排序完成。这个算法的名字由来是因为越小的元素会经由交换慢慢“浮”到数列的顶端。
实现思路:
双重for循环,内层变量为i, 外层为j,
在内层循环中不断的比较相邻的两个值(i, i+1)的大小,
如果i+1的值大于i的值,交换两者位置,每循环一次,外层的j增加1,
等到j等于n-1的时候,结束循环
list = [1, 4, 3, 80, 12, 33, 8]
def bubble_sort(list):
n = len(list)
for j in range(0, n - 1): #外层循环
for i in range(0, n - 1 - j): #内层循环
if list[i] > list[i + 1]: #内层不断比较相邻两个值的大小
list[i], list[i + 1] = list[i + 1], list[i] #如果i+1的值大于i的值,交换两者位置
bubble_sort(list)
print(list)
方法一:
def maopao_sort(list):
'''冒泡排序'''
n = len(list)
for j in range(n-1):
for i in range(0, n-1-j):
if list[i] > list[i+1]:
list[i],list[i+1] = list[i+1],list[i]
if __name__ == '__main__':
list1 = [1, 3, 5, -1, 7, 80, 0]
print(list1)
maopao_sort(list1)
print(list1)
方法二:优化以后的代码:
list = [1, 4, 3, 80, 12, 33, 8]
n=len(list) #计算列表的长度,循环的次数长度减1
for i in range(n): #外循环6次
count_n=0 #计算内层循环交换次数
for j in range(n-i-1):
if list[j]>list[i]:
list[j],list[j+1]=list[j+1],list[j]
count_n +=1
if count_n==0: #如果内部交换等于0,就说明排列完成
break
print(list)