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

问题描述问题:当需要将一组乱序的数据排序时应该如何解决?示例:此程序每一次输入一组乱序的数据后,会输出一组排好顺序的从小到大(或从大到小)的数据。输入:[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代码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到3if 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循环及定义函数来解决此类问题,解决生活中需要将大量数据惊醒排序的问题。这类型给数字排序的问题就可以通过这种方法来解决,当然或许还有其它更好的方法,只是暂时就想到了这个,但相信会有人想出更好的解决方法,所以,要在今后的学习中根据所学的知识去拓展一些更加简洁和方便的解决方法。实习编辑:李欣容作者:陈文杰、邓斯丹、李俭

(0)

相关推荐