python 冒泡排序 原理_用Python实现排序算法——冒泡排序

正在学习Python,然后呢,也想复习一下算法,所以采取这样的方式,一举两得。后面会用python逐步完成常用算法,算是学习笔记了。

贴代码之前还是先描述算法原理。冒泡的原理(以下描述为降序排序)是:

1、比较a[0]和a[1],若a[0]>a[1],则保持位置不变;若a[0]

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)

>>> test = [22,2,14,6,88,45,42,54,410]

>>> BubbleSort.bubbleSort(test)

[2, 6, 14, 22, 42, 45, 54, 88, 410]

以上就是python冒泡的简单实现。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值