网上很多讲排序的,但是都是用JAVA写的,最近自己用python写了一下,也用自己的话再描述一下,加深理解。
具体思想的话,可以参考这篇博客:https://blog.csdn.net/songzitea/article/details/8864084。
这边简述一下,冒泡可以简单地理解为就是大的数沉底,小的往上。具体实现的时候,就是相邻的两个数比较,如果大的在前,交换顺序,反之,不操作。我从前往后扫描,就是先确定最大数,然后继续操作,获得第二大;如果是从后往前比较,就是先得到最小的数。详细的可以看看代码理解。
'''
Fun:实现冒泡排序
i=0:
j=1, 相邻两个数进行比较,即比较j=[0],j[1],小的在前。
然后接着比较j[2]和变化之后的j[1],小的在前;
再次比较j[3]和变化之后的j[2],小的在前;
遍历数组j之后,最大的数排在最后。
i=1:
j=1,此次遍历只用遍历到倒数第二个数即可。
……
这一过程继续下,直到时最后一次,
此时只比较一次,即比较最后两个数。
'''
def bubbleSort(a):
for i in range(0,len(a)):
for j in range(1,len(a)-i):
#这里由于是将最大或最小的数放在右边,所以j < len(a) - i,这里是最大数
if a[j-1]>a[j]:
tmp=a[j-1]
a[j-1]=a[j]
a[j]=tmp
# print(a) #这里可以打印出数组来看看数据变化的过程。
return a
a=[6,4,5,1,8]
print(bubbleSort(a))