前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >算法创作 | 冒泡排序问题解决方法

算法创作 | 冒泡排序问题解决方法

作者头像
算法与编程之美
发布2021-03-30 15:05:36
3380
发布2021-03-30 15:05:36
举报

问题描述

问题:当需要将一组乱序的数据排序时应该如何解决?

示例:此程序每一次输入一组乱序的数据后,会输出一组排好顺序的从小到大(或从大到小)的数据。

输入:[64,34,25,12,22,11,90]

输出:[11,12,22,25,34,64,90]

输入:[64,34,25,12,22,11,90]

输出:[90,64,34,25,22,12,11]

解决方案

输入一组乱序的数据,要求将其输出为一组由从小到大(或从大到小)排列的数据:

原理:比较相邻两个变量但值,满足大于或小于的条件,交换两个变量的值。

例如:一组数据64,34,25,12,22,11,90(从小到大排序),标记的两个数字进行比较如果满足即会交换位置

条件:前者大于后者,满足就交换(从小到大排序)

第一次:

64,34,25,12,22,11,90//64>34,交换

34,64,25,12,22,11,90//64>25,交换

34,25,64,12,22,11,90//64>12交换

34,25,12,64,22,11,90//64>22,交换

34,25,12,22,64,11,90//64>11,交换

34,25,12,22,11,64,90//64<90,不交换

34,25,12,22,11,64,90//第一轮排序结束

第二次:

34,25,12,22,11,64,90//34>25,交换

25,34,12,22,11,64,90//34>12,交换

25,12,34,22,11,64,90//34>22,交换

25,12,22,34,11,64,90//34>11,交换

25,12,22,11,34,64,90//34<64,不交换

25,12,22,11,34,64,90//64<90,不交换

25,12,22,11,34,64,90//第二轮排序结果

****每一次都会通过相邻比较得出一个最大值,以此类推,就能将此数据排序

代码清单-冒泡排序问题Python代码

代码语言:javascript
复制

def sort(arr):          #sort函数,arr是一个参数(形参)#从小到大排序

    n = len(arr)        #将数组长度赋予n,n为数组长度的值

    for i in range(n):     # for循环,循环n次

        for j in range(0, n - i - 1):   #j在0到n-i-1之间,假如n为5,第一次就在0到4,第二次就是0到3

            if arr[j] > arr[j + 1]:   #如果前一个数大于后一个数

                mid =arr[j]             #中间变量mid暂时存储前一个值

              arr[j]=arr[j + 1]          #将后一个值赋值给前一个

               arr[j + 1] =mid          #将mid赋值给后一个,交换完毕

##每一次排序都能确定一个最大的值

arr=[64,34,25,12,22,11,90]   #随机输入一个数组

sort(arr)                   #调用函数sort()

 

print("排序后的数组:")

for i in range(len(arr)):         #遍历排序好的数组

   print(arr[i])

结语

本文主要讲述用“冒泡排序”的算法来解决数据乱序的问题,这需要做到的是熟练掌握for循环及定义函数来解决此类问题,解决生活中需要将大量数据惊醒排序的问题。这类型给数字排序的问题就可以通过这种方法来解决,当然或许还有其它更好的方法,只是暂时就想到了这个,但相信会有人想出更好的解决方法,所以,要在今后的学习中根据所学的知识去拓展一些更加简洁和方便的解决方法。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2021-03-28,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 算法与编程之美 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档