您的位置:首页 > 编程语言 > Python开发

【代码】Python冒泡排序的实现

2016-06-15 23:15 281 查看
afanty分析:

对于N个数的递进冒泡排序

1、趟数是 N-1 趟

2、第 i 趟的比较次数是 N-i 次

3、两两比较前者大于(注意不是大于等于,冒泡是稳定的)后者则交换。

改进的话就是增加一个交换记录器(数),每趟检查下记录器,如果没发现交换则表示已经有序。

我上面的表述是为了方便写代码,详细的冒泡介绍可以百度下,下面是实现的代码:

(注意的一个问题是,对象的引用问题,代码中对参数进行深度拷贝防止修改原来的列表)

#coding=utf-8

'''
Author: afanty
Date: 2015/5/16
'''

from copy import deepcopy

def bubbleSort(a=[]):
'''
:param a: 列表,默认为空列表
:return: 参数为非列表类型返回False,否则放回递增排序列表
'''

if isinstance(a,list):
i = 1
a = deepcopy(a)
while i <= len(a): # 趟数
j,flag = 1,0 # flag为交易记录数,当某趟没有发生交换即表示列表已经有序
while j <= (len(a)-1): # 每趟比较次数
if a[j-1] > a[j]:
flag += 1
a[j-1],a[j] = a[j],a[j-1]
j += 1
# while
if flag == 0:
return a
i += 1
# while
return a
else:
return False
# end
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: