# 用python实现冒泡排序
先简单介绍一下 冒泡排序 :
"""
冒泡排序是一种简单的排序算法,它也是一种稳定排序算法。
其实现原理是重复扫描待排序序列,并比较每一对相邻的元素,当该对元素顺序不正确时进行交换。
一直重复这个过程,直到没有任何两个相邻的元素可以交换,就表明完成了排序。
一般情况下,称某个排序算法稳定,指的是当待排序序列中有相同的元素时,它们的相应位置在排序后不会发生改变。
eg:和大小个比较排队一个道理
"""
注:我想要练习函数语法,所以就用函数写的了,咱就是说,明明可以简单粗暴 ,我偏要给自己搞的这么复杂(泪目);
代码思路:
①第一步,整体思路就是,定义一个主函数 main() ,在主函数里设置冒泡排序功能,根据主函数的需求定义一个pop() 冒泡排序函数,然后设置冒泡排序功能;
②第二步,我重点说一下 pop() 。在冒泡排序之前,肯定要先有一个列表(创建列表有两种方式:①再定义一个创建列表的函数 make_list() ,然后直接调用;②在 pop() 底下直接创建列表,这种很简单,我就不写了) ;
③第三步,通过for循环实现冒泡排序(冒泡排序具体语法什么意思大家自行去查找一下吧,很多博主写的十分详细)
注:全部代码如下:
# 第一种方法
# 手动输入一个列表
def make_list():
list_1 = []
content = input("请输入一个列表(直接输入数组即可,不要空格!):")
for i in content.strip():
list_1.append(int(i))
return list_1
# 冒泡排序
def pop():
# 调用列表
new_list = make_list()
print(f"您输入的列表:{new_list}")
while True:
a = False
# 冒泡排序
list_long = len(new_list)
for i in range(list_long):
a = True
for j in range(list_long - i - 1):
if new_list[j] > new_list[j + 1]:
new_list[j], new_list[j + 1] = new_list[j + 1], new_list[j]
print(f"排序之后的列表:{new_list}")
a = False
if a:
return
# 主函数
def main():
# 冒泡排序
pop()
if __name__ == '__main__':
main()
结果:
请输入一个列表(直接输入数组即可,不要空格!):532473
您输入的列表:[5, 3, 2, 4, 7, 3]
排序之后的列表:[3, 5, 2, 4, 7, 3]
排序之后的列表:[3, 2, 5, 4, 7, 3]
排序之后的列表:[3, 2, 4, 5, 7, 3]
排序之后的列表:[3, 2, 4, 5, 3, 7]
排序之后的列表:[2, 3, 4, 5, 3, 7]
排序之后的列表:[2, 3, 4, 3, 5, 7]
排序之后的列表:[2, 3, 3, 4, 5, 7]
注:案例源代码如下:
def bubble_sort(list):
for i in range(0, len(list)):
is_sorted = True
for j in range(0, len(list) - i - 1):
if list[j] > list[j + 1]:
list[j], list[j + 1] = list[j + 1], list[j]
is_sorted = False
if is_sorted:
return
list1 = [97, 3, 6, 1, 8, 5, -20, 100, 50, 200, -32, 123]
bubble_sort(list1)
print(list1)
结果:
[-32, -20, 1, 3, 5, 6, 8, 50, 97, 100, 123, 200]