博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
[Swift]快速排序算法
阅读量:5933 次
发布时间:2019-06-19

本文共 1858 字,大约阅读时间需要 6 分钟。

hot3.png

快速排序算法 - Swift

func quickSortPartition(array : [Int], left : Int, right: Int, rise : Bool) ->([Int], Int){    var i = left    var j = right    let key = array[i]        var sortArray = array            while (i < j) {                while (i < j && (rise ? (key <= sortArray[j]) : (key >= sortArray[j])) ) {                        j -= 1;        }        guard i < j else {            continue        }                sortArray[i] = sortArray[j];        print(">>>\(sortArray) \(key) \(i)  \(j)")                while (i < j && (rise ? (key >= sortArray[i]) : (key <= sortArray[i])) ) {                        i += 1;        }        guard i < j else {            continue        }                sortArray[j] = sortArray[i];        print("<<<\(sortArray) \(key) \(i)  \(j)")    }        sortArray[i] = key;        return (sortArray, i)}func sortByFast(array : [Int], left : Int, right: Int, rise : Bool) -> [Int]{    guard left < right else {        return array    }        var (sortArray, p) = quickSortPartition(array: array, left: left, right: right, rise: rise)        print("left_Sort \(sortArray) left :\(left) right:\(p-1)")    sortArray = sortByFast(array: sortArray, left: left, right: p-1, rise: rise)    print("rightSort \(sortArray) left :\(p+1) right:\(right)")    sortArray = sortByFast(array: sortArray, left: p+1, right: right, rise: rise)        return sortArray}
var sortByFast_list : [Int] = [86, 37, 56, 29, 92, 73, 15, 63, 30, 8];let sortByFast_list_count = sortByFast_list.countlet sortByFast_list2 = sortByFast(array: sortByFast_list, left: 0, right: sortByFast_list_count-1 , rise: true)let sortByFast_list3 = sortByFast(array: sortByFast_list, left: 0, right: sortByFast_list_count-1 , rise: false)
[8, 15, 29, 30, 37, 56, 63, 73, 86, 92][92, 86, 73, 63, 56, 37, 30, 29, 15, 8]

参考文章

转载于:https://my.oschina.net/u/1993252/blog/860829

你可能感兴趣的文章
vuecli2多页面 实测成功
查看>>
【细说Java】揭开Java的main方法神秘的面纱(转)
查看>>
HTML转义字符大全(转)
查看>>
CountDownLatch
查看>>
stuts1:(Struts)Action类及其相关类
查看>>
Linux系统的启动过程
查看>>
Python_day02_2018.7.3_(格式化输出,基本运算符)
查看>>
判断指定的成员名是否属于对象(In和hasOwnProperty)
查看>>
linux shell 字符串操作(长度,查找,替换)详解
查看>>
oracle的分页查询,mabatis的sql配置
查看>>
java如何计算两个经纬度之间的距离?
查看>>
Jquery 获取IP地址
查看>>
Java读取证书
查看>>
OAuth2:隐式授权(Implicit Grant)类型的开放授权
查看>>
iOS多线程_05_线程间通信NSThread/GCD
查看>>
OpenAcc笔记——update
查看>>
CENTOS下安装LNMP环境随笔
查看>>
在T-SQl中使用变量,事务,系统存储,自定义存储
查看>>
使用自定义的确认框代替默认的浏览器的确认框
查看>>
13:整数去重(1.9)
查看>>