【代码】Python冒泡排序的实现
2016-06-15 23:15
295 查看
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
对于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
相关文章推荐
- 【代码】Python冒泡排序的实现
- 【代码】Python冒泡排序的实现
- 【代码】Python冒泡排序的实现
- 【代码】Python冒泡排序的实现
- 【代码】Python冒泡排序的实现
- 【代码】Python冒泡排序的实现
- 【每日一课】Python官方文档- --- 2 (数据类型)
- Python中print函数输出时的左右对齐问题
- Keras学习日记1
- 转载:python的编码处理(一)
- Python解析文件中的unicode字符
- Python与序列相关的内建函数
- Python Virtualenv Installation
- python
- python自动化运维学习之psutil模块
- python+selenuim webdriver 页面跳转后如何定位元素
- Python3 面向对象 高级编程
- 【转载】python 图片转字符
- Python 进阶学习笔记2
- Jenkins中集成python,支持参数生成Makefile文件