用Python实现排序算法——冒泡排序
正在学习Python,然后呢,也想复习一下算法,所以采取这样的方式,一举两得。后面会用python逐步完成常用算法,算是学习笔记了。
贴代码之前还是先描述算法原理。冒泡的原理(以下描述为降序排序)是:
1、比较a[0]和a[1],若a[0]>a[1],则保持位置不变;若a[0]<a[1],则两者互换位置。
2、然后比较a[1]和a[2],一直到a[n-1]。这样最小值就会在列表的最后。
3、第二轮遍历列表,依旧a[0]开始比较,到a[n-2]。如此重复,每一轮遍历都能选出一个次小值。
4、当遍历第n轮时排序完成。
Python实现:
# -*- coding: UTF-8 -*- def bubbleSort(sort_list): list_len = len(sort_list) if list_len < 2: return sort_list for i in range(list_len): for j in range(list_len-i-1): if sort_list[j]>sort_list[j+1]: sort_list[j],sort_list[j+1] = sort_list[j+1],sort_list[j] return sort_list
调试的时候,意外学到了一些知识,首先说我是如何调试的。我把这个函数保存为一个模块BubbleSort.py,然后在shell界面中执行:
>>> import BubbleSort
>>> test = [22,2,14,6,88,45,42,54,410]
>>> BubbleSort.bubbleSort(test)
[2, 14, 6, 22, 45, 42, 54, 88, 410]
发现结果是不对的,目测只迭代了一次,经查看代码发现第二个迭代中j写成了i,修改之后重复上述操作,结果依然不对,无论我导入多少遍结果都还是一样的。后来我想得可能导入的内容没有被更新,于是google了一下,确实是应该用reload(module)函数重新加载模块:
>>> import BubbleSort
>>> reload(BubbleSort)
<module ‘BubbleSort‘ from ‘E:\PythonTest\BubbleSort.py‘>
>>> test = [22,2,14,6,88,45,42,54,410]
>>> BubbleSort.bubbleSort(test)
[2, 6, 14, 22, 42, 45, 54, 88, 410]
以上就是python冒泡的简单实现。
本文出自 “绵之学习笔记” 博客,请务必保留此出处http://chenmg.blog.51cto.com/3039876/1393719
郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。