Swift中三大基础排序算法的优劣详解

在Swift编程语言中,排序算法是开发者经常遇到的编程问题之一。虽然Swift提供了内置的排序方法,如Array.sort(),但理解基础排序算法的原理可以帮助开发者更好地优化代码和解决问题。主要讨论了三种常见排序算法:选择排序、冒泡排序以及快速排序。

1. 选择排序(Select Sort)

选择排序是一种简单直观的排序算法。其工作原理是每一次从待排序的数据元素中选出最小(或最大)的一个元素,存放在序列的起始位置,直到全部待排序的数据元素排完。在Swift中,未优化的选择排序代码如下:

func selectSort(list: inout [Int]) {  
    let n = list.count  
    for i in 0..

2. 冒泡排序(Bubble Sort)

冒泡排序每次比较相邻的元素,并交换它们的位置,直到序列有序。代码如下:

func bubbleSort(list: inout [Int]) {  
    let n = list.count  
    for i in 0.. list[j + 1] {  
                list.swapAt(j, j + 1)  
            }  
        }  
    }  
}  

3. 快速排序(Quick Sort)

快速排序通过选择一个基准元素,将序列分为两个子序列,并递归地排序子序列。代码如下:

func quickSort(list: inout [Int], left: Int, right: Int) {  
    if left >= right { return }  
    let pivot = list[(left + right) / 2]  
    let index = partition(&list, left: left, right: right, pivot: pivot)  
    quickSort(list: &list, left: left, right: index - 1)  
    quickSort(list: &list, left: index, right: right)  
}  

func partition(_ list: inout [Int], left: Int, right: Int, pivot: Int) -> Int {  
    var left = left  
    var right = right  
    while left <= right {  
        while list[left] < pivot xss=removed> pivot { right -= 1 }  
        if left <= right {  
            list.swapAt(left, right)  
            left += 1  
            right -= 1  
        }  
    }  
    return left  
}  

总结:选择排序适合较小的数据量,冒泡排序简单但效率低,快速排序在多数情况下效率最高。理解这些算法有助于优化Swift程序性能。

pdf 文件大小:72.86KB