Swift實(shí)現(xiàn)四種簡(jiǎn)單的排序算法

一、冒泡排序

// 冒泡排序
for i in 0..<list.count {
    for j in i+1..<list.count {
        if list[i] > list[j] {
            let temp = list[i]
            list[i] = list[j]
            list[j] = temp
        }
    }
}

二、選擇排序

// 選擇排序
for i in 0..<list.count {
    var min = i
    for j in i+1..<list.count {
        if list[j] < list[min] {
            min = j
        }
    }
    let minValue = list[min]
    list[min] = list[i]
    list[i] = minValue
}

三、插入排序

// 插入排序
for i in 1..<list.count {
    let temp = list[i]
    for j in (1...i).reversed() {
        if list[j - 1] > temp {
            let current = list[j]
            list[j] = list[j-1]
            list[j - 1] = current
        } else {
            break
        }
    }
}

四、希爾排序

// 希爾排序
var gap = list.count / 2

while gap > 0 {
    var j: Int = 0
    for i in 0..<gap {
        j = i + gap
        while j < list.count {
            if list[j] < list[j - gap] {
                let temp = list[j]
                var k = j - gap
                while k >= 0 {
                    if list[k] > temp {
                        list[k + gap] = list[k]
                        list[k] = temp
                    } else {
                        break
                    }
                    k -= gap
                }
            }
            j += gap  
        } 
    }
    gap /= 2
}
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

友情鏈接更多精彩內(nèi)容