排序是指一组资料中,将资料以「由大到小」或「由小到大」的方式重新排列。
常见的排序演算法有下列几种:
接下来会逐日开始探讨各种排序演算法,今天就先来看看气泡排序法吧!
在我们讨论气泡排序时,先来点影片,了解气泡排序是怎麽运作。在理解演算法时,影片辅助会相对图片效果较好。
气泡排序是重复进行「由右往左,将相邻的数字相比後重新排列」的操作
气泡排序的比较次数是,第一次n-1次,第二次n-2次,一直到第n-1次。总次数为(n-1)+(n-1)+...+1=n^2/2,重新排列的次数与排列顺序无关,而是与输入数据有关。最极端的情况就是数据已经由小到大排列好,不需重新排序(交换次数0。气泡排序法的时间复杂度为O(n^2)。
Bubble sort 运作如下:
import random
# 从1-100中不重复随机产生9组数字
A = random.sample(range(1,100),9)
# print(A)
#外层变数i,控制内层变数j的上限
for i in range(len(A)-1,0,-1):
for j in range(i):
if A[j] > A[j+1]:
#交换数字
A[j],A[j+1] = A[j+1],A[j]
print("气泡排序外层回圈执行第", 9-i,"次")
# print( )
for item in A:
print(item,' ',end="")
执行结果:
气泡排序外层回圈执行第 1 次
9 29 65 46 94 66 35 54 95
气泡排序外层回圈执行第 2 次
9 29 46 65 66 35 54 94 95
气泡排序外层回圈执行第 3 次
9 29 46 65 35 54 66 94 95
气泡排序外层回圈执行第 4 次
9 29 46 35 54 65 66 94 95
气泡排序外层回圈执行第 5 次
9 29 35 46 54 65 66 94 95
气泡排序外层回圈执行第 6 次
9 29 35 46 54 65 66 94 95
气泡排序外层回圈执行第 7 次
9 29 35 46 54 65 66 94 95
气泡排序外层回圈执行第 8 次
9 29 35 46 54 65 66 94 95
气泡排序会有两种情况,最佳与最好,在两种情况下,比较及交换次数也有所差异:
第一种情况:最佳情况
第二种情况:最差情况
<<: 铁人赛 Day9 -- 一定要知道的 CSS (六) -- background-color/background-image
前面我们介绍了透过 DAO 取出资料的许多方式,包含了一对多关联,多对多关联,甚至包含到 Paren...
今天继续来熟悉Unity介面~(ง •̀_•́)ง‼ 昨天了解了阶层管理区,今天打算接续着看游戏执行...
走了1/3天的服务介绍,现在让我们尝试把各项服务串起来看看吧! 接下来几天,我们会透过AWS云端服务...
5 图的走访 - DFS 篇 今天要跟大家分享另一种在图上面遍历所有节点的深度优先搜索 (Depth...
前言 昨天已经将addAlarmContentTableViewCell的元件都建立完毕了,但是画面...