栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Python

python冒泡排序

Python 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

python冒泡排序

假设有一个数组arr = [6, 4, 3, 1, 2]需要按从小到大的顺序排序,用眼睛一眼就看出来怎么排了,用程序该如何实现呢

冒泡排序的规则:

1 相邻两个数比较,若前面的数大小后面的数,交换位置

2 再按1的规则进行排序,直到所有数都排好序为止

使用程序来模拟前面的规则,为了便于理解,我们先用数据来实际模拟一遍

原始数据集:6, 4, 3, 1, 2

第一轮结果:4, 3, 1, 2, 6

第二轮结果:3, 1, 2, 4, 6

第三轮结果:1, 2, 3, 4, 6

第四轮结果:1, 2, 3, 4, 6

详细说明

第一轮排序:6>4交换位置,变成4,6, 6>3交换位置变成3, 6, 6>1,交换位置变成1, 6, 6>2,交换位置变成2, 6, 第一轮排序完成,最终最大数6稳定在最后位置

第二轮排序:4>3交换位置,变成3,4,4>1交换位置变成1,4,4>2,交换位置变成2,4,最终剩下的最大数4稳定在倒数第二位置

第三轮排序:3>1交换位置,变成1, 3, 3>2交换位置变成2,3,最终剩下的最大数3稳定在倒数第三位置

第四轮排序:1<2,不变,2稳定在倒数第四位置

第五轮排序:只剩下1,1稳定在倒数第五位置

程序模拟:

我们可以用程序模拟每一轮的排序过程:

def sort_once(arr, index):
    for i in range(len(arr)-1-index):
        print(arr[i], arr[i+1])
        if arr[i] > arr[i+1]:
            arr[i], arr[i+1] = exchange(arr[i], arr[i+1])
    print(arr)

说明: 可以每一轮都将相邻的数进行比较,则对于5个数的排序,应该是5-1次比较,第一轮是比较4次,第二轮则是3次,看起来是每多一轮就多减1,我们可以设置个参数index,每次多出来的就减index即可

每一轮排序完成,我们可以把5轮都做一下:

for i in range(len(arr)):
    sort_once(arr, i)

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/923161.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号