swift 排序方法比较

文章目录

  • 冒泡排序
  • 快速排序
  • 插入排序

冒泡排序

func bubbleSort(arr: inout [Int]) {
    //两两比较 需要比较 count - 1 次
    for i in 0..<arr.count-1 {
        //以下 for 循环走完后即可将最大值放到最后,此处count-1 后还需要 - i
        for j in 0..<arr.count-1-i {
            // 如果 前面的数大于后面的数,就将这两个数交换位置
            if arr[j] > arr[j+1] {
                arr.swapAt(j, j+1)
            }
        }
    }
}

方法调用

var arr = [2, 4, 9, 8, 1, 0, 3, 5, 2]
print(arr)
bubbleSort(arr: &arr)
print(arr)

控制台输出

[2, 4, 9, 8, 1, 0, 3, 5, 2]
[0, 1, 2, 2, 3, 4, 5, 8, 9]

快速排序

func quickSort(arr: inout [Int], start: Int, end: Int) {
        //递归的结束条件
        if start >= end {
            return
        }
        var low = start
        var high = end
        //标准数
        let stand = arr[start]
        
        while low < high {
            // 从右边开始比较,比key大的数位置不变
            while low < high && stand <= arr[high] {
                high-=1
            }
            // 只要出现一个比key小的数,将这个数放入左边i的位置
            arr[low] = arr[high]
            // 从左边开始比较,比key小的数位置不变
            while low < high && stand >= arr[low] {
                low+=1
            }
            // 只要出现一个比key大的数,将这个数放入右边j的位置
            arr[high] = arr[low]
        }
        // 将key放入low的位置,则左侧数都比stand小,右侧数都比stand大
        arr[low] = stand
        quickSort(arr: &arr, start: start, end: low)//左递归
        quickSort(arr: &arr, start: low+1, end: end)//右递归
    }

插入排序

	//插入排序
    func insertSort(arr: inout [Int]) {
        /// 遍历所有数据
        for i in 1..<arr.count { //注意起始位置
            /// 从i 开始 倒着 --
            for j in (1...i).reversed() {
                /// 如果后面的值比前面的值小,就交换位置
                if arr[j] < arr[j-1] {
                    arr.swapAt(j, j-1)
                }
            }
        }
    }

正在更新中

你可能感兴趣的:(Swift)