作者: Jim Wang 公众号: 巴博萨船长

摘要:本文主要讨论在Python实际应用中如何实现冒泡排序算法探讨与指派运算替代方法

Abstract: This article mainly discusses how to implement the bubble sorting algorithm in the actual application of Python and the alternative method of assignment operation

作者: Jim Wang 公众号: 巴博萨船长

冒泡排序算法

  1. 比较相邻的元素。如果第一个比第二个大,就交换他们两个。

  2. 对每一对相邻元素作同样的工作,从开始第一对到结尾的最后一对。这步做完后,最后的元素会是最大的数。

  3. 针对所有的元素重复以上的步骤,除了最后一个。

  4. 持续每次对越来越少的元素重复上面的步骤,直到没有任何一对数字需要比较。

正文

三个函数,对比一下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
def list_sort_new(list_in):
for j in range(len(list_in)-1, 0 ,-1):
for i in range(0, j):
if list_in[i]>list_in[i+1]:
list_in[i],list_in[i+1] = list_in[i+1],list_in[i]
return list_in

def list_sort_old(list_in):
for j in range(len(list_in)-1, 0 ,-1):
for i in range(0, j):
if list_in[i]>list_in[i+1]:
list_temp = list_in[i]
list_in[i] = list_in[i+1]
list_in[i+1] = list_temp
return list_in

def list_sort_test(list_in):
for j in range(len(list_in)-1, 0 ,-1):
for i in range(0, j):
if list_in[i]>list_in[i+1]:
print "before>> " + str(list_in[i])
list_in[i] = list_in[i+1]
print "after>> " + str(list_in[i])
list_in[i+1] = list_in[i]
print "and> " + str(list_in[i+1])
return list_in

list_test = [2, 1, 3, 44, 22, 53, 25, 26]
print list_test
print "*"*20
print(list_sort_test(list_test))

其中函数list_sort_new()和list_sort_old()都能实现你的目的,其中list_sort_new()中使用了指派运算, 就相当于c语言的i++。 list_sort_old()替代了list_sort_new()中的指派运算,其中j的for实现了全部比较,而倒序减少了不必要的比较,list_sort_test()表明了,为什么需要一个变量来充当缓存。

欢迎大家关注本人个人公众号评论。才疏学浅,欢迎交流提意见彼此提高。需要声明一下51cto博客作者zuiwuxin就是作者本人,所以不存在版权问题。以后该博客将作为个人文章的主要发布地。


版权声明:
文章首发于 Jim Wang's blog , 转载文章请务必以超链接形式标明文章出处,作者信息及本版权声明。