从第一个元素开始,对数组中两两相邻的元素比较,将值较小的元素放在前面,值较大的元素放在后面,一轮比较完毕,一个最大的数沉底成为数组中的最后一个元素,一些较小的数如同气泡一样上浮一个位置。n个数,经过n-1轮比较后完成排序。
假定有下标为0~n的n+1个数的序列,要求按升序排列,实现的步骤如下:
(1)从第0个元素开始与后一个比较,如果比后大两元素交换,依次比较到第n个元素,最终将最大的数换入第n个元素中,a(n)不动
(2)重复(1) ,依次比较到第n-1个元素,最终将最大的数换入第n-1个元素中,a(n-1)不动
(3)重复(1) ,依次比较到第n-2个元素,最终将最大的数换入第n-2个元素中,a(n-2)不动
………………………………………
(n)a(0)与a(1)比较,如果a(0)大,与a(1)交换, a(0)最小
代码实现:
#coding:utf-8
arr = []
#冒泡排序函数
def BubbleSort():
for i in range(len(arr)-1):
for j in range(len(arr)-i-1):
if arr[j+1] < arr[j]: #相邻两数比较
arr[j+1],arr[j] = arr[j],arr[j+1] #交换两个数
#打印函数
def PrintAns():
for i in arr:
print(i,end=" ") #以空格分开来输出
#主函数
sum = int(input("请输入需要测试的个数:"))
str_in = input("以空格分开%d个数据:" %sum) #输入的是一串字符串,为以空格为间隔输入打下基础
for i in str_in.split(): #以空格为间隔取str_in中的值
arr.append(int(i)) #先把i对应转换成int类型,然后再添加到arr列表
BubbleSort() #调用BubbleSort()函数
PrintAns() #调用PrintAns()函数