冒泡排序python
思路:可以将第一次排序过程先写出来,当第i个元素大于第i+1个元素时,将两个元素位置进行交换,等于小于都不需要做任何操作
0~n-1是因为这个过程始终是第i个元素与其后一个元素相比较,不需要移动到最后一个元素
def bubble_sort(alist): n=len(alist) for i in range(0,n-1): if alist[i]>alist[i+1]: alist[i],alist[i+1]=alist[i+1],alist[i]
这个时候,我们需要考虑需要这样比较多少次,我们可以发现,不是每次都比较n-1次,第二次就是比较n-2次了,引入一个变量j,当第一次比较时,进行n-1次,j=0
当第二次比较时,n-2次,j=1
当第三次比较时,n-3次,j=2
当第四次比较时,n-4次,j=3
其实就是n-1-j
这时候我们可以将完整代码写完,如下:
#coding:utf-8 def bubble_sort(alist): n=len(alist) for j in range(n-1): for i in range(n-1-j): if alist[i]>alist[i+1]: alist[i],alist[i+1]=alist[i+1],alist[i] a=[0,100,25,98,4,66,108,51] print(a) bubble_sort(a) print(a)
最后结果如下: