Swift 程序 使用冒泡排序?qū)?shù)組進行降序排序
冒泡排序是排序算法中最簡單的一種,但是因為其效率低,不適用于大型數(shù)據(jù)排序。愛掏網(wǎng) - it200.com在實踐中,只適用于數(shù)據(jù)量小的情況或在特殊情況下的優(yōu)化排序,比如本文所要實現(xiàn)的降序排序。愛掏網(wǎng) - it200.com
冒泡排序的原理是通過相鄰元素交換位置,通過多輪循環(huán),每輪循環(huán)都會將一個最大(小)的元素移到數(shù)據(jù)結(jié)尾(開頭)。愛掏網(wǎng) - it200.com代碼實現(xiàn)通常使用兩重循環(huán)來完成,其中外層循環(huán)控制比較輪數(shù)(n-1 輪),內(nèi)層循環(huán)控制每輪比較的次數(shù)。愛掏網(wǎng) - it200.com
下面是冒泡排序的 Swift 實現(xiàn)代碼:
func bubbleSortDescending(_ arr: inout [Int]) {
let n = arr.count
for i in 0..<(n - 1) {
for j in 0..<(n - i - 1) {
if arr[j] < arr[j+1] {
swap(&arr[j], &arr[j+1])
}
}
}
}
其中 arr
表示待排序的整型數(shù)組,參數(shù)使用 inout
修飾,表示使用引用傳遞方式。愛掏網(wǎng) - it200.com
程序說明
上述代碼中,外層循環(huán)的初始值為 0,結(jié)束條件是 n - 1
(最后一輪只剩下一個元素不需要比較),循環(huán)變量 i
每次增加 1。愛掏網(wǎng) - it200.com
內(nèi)層循環(huán)的初始值為 0,結(jié)束條件是 n - i - 1
(每輪比較已經(jīng)排好的元素不需要再次比較),循環(huán)變量 j
每次增加 1。愛掏網(wǎng) - it200.com
每次比較相鄰的兩個元素,如果前一個元素比后一個元素小,說明需要交換它們的位置。愛掏網(wǎng) - it200.com這里使用 swap
函數(shù)實現(xiàn)交換, &
是引用操作符。愛掏網(wǎng) - it200.com
最后,對于給定的數(shù)組,調(diào)用 bubbleSortDescending
函數(shù)即可完成降序排序。愛掏網(wǎng) - it200.com排序完成之后,數(shù)組的元素從大到小排列。愛掏網(wǎng) - it200.com
結(jié)論
本文介紹了冒泡排序的原理及 Swift 語言實現(xiàn),實現(xiàn)了使用冒泡排序?qū)?shù)組進行降序排序的程序。愛掏網(wǎng) - it200.com冒泡排序雖然效率低,但是它是排序算法的基礎(chǔ),有助于了解其它更高效的排序算法的實現(xiàn)原理。愛掏網(wǎng) - it200.com