用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

用Python实现排序算法——冒泡排序,古老的榕树,5-wow.com

郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。