Swift ----快排

var a = [2,3,0,1,6,3,6,2,43,234,3,4,5,4,5,8,2]
quickSort(unsortedArray: &a, leftIndex: 0, rightIndex: a.count - 1)
func quickSort(unsortedArray: inout [Int], leftIndex: Int, rightIndex: Int) {
        guard unsortedArray.count > 1 else {
            return
        }
        // 获取中间值
        let pivot = unsortedArray[(leftIndex + rightIndex) / 2]
        var i = leftIndex
        var j = rightIndex
        // 循环开始
        while i < j {
            // 如果 unsortedArray[i] 小于 中间值,则 i 加 1,直到 大于 中间值停止
            while unsortedArray[i] < pivot {
                i += 1
            }
            // 如果 unsortedArray[j] 大于中间值,则 j 减 1,直到 小于 中间值停止
            while unsortedArray[j] > pivot {
                j -= 1
            }
            // 如果 i <= j && i != j ,则交换i跟j所对应下标的值。让大于中间的数放在右边,小于中间值的数放在左边。
            // 如果 i > j, 则跳出循环
            if i <= j {
                if i != j {
                    unsortedArray.swapAt(i, j)
                    print(unsortedArray)
                }
                // 交换值后,i继续加1,j继续减1, 直到 i > j
                i += 1
                j -= 1
            }
        }
        // 如果最左的值小于J 则从最左到J 继续排序
        if leftIndex < j {
            quickSort(unsortedArray: &unsortedArray, leftIndex: leftIndex, rightIndex: j)
        }
        // 如果 j <= leftIndex , i< rigthIndex 则从i开始,到最右重新排序
        if i < rightIndex {
            quickSort(unsortedArray: &unsortedArray, leftIndex: i, rightIndex: rightIndex)
        }
    }

打印排好顺序的数组

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值