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)
                }
            }
        }
    }

正在更新中

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值