swift 数组拓展---排序(sort() 方法)

前两篇博客写了在使用swift写冒泡排序和选择排序,实在是遇到了很多坑,在使用forin循环时。也着实遇到了不少隐藏的点。但是swift 提供了可供使用的 排序的方法,如下图:swift 数组拓展---排序(sort() 方法)_第1张图片

var sortArr : [Float] = [9.54,5.88,2.09,4.76,73.1,6.9,3.087]
        print(sortArr)

先来一个数组吧
最常用的算是 前四个方法,我来挨个试一下,这四个方法是如何使用的,分别有什么效果
头一个 sort() 方法,这里要注意一下,该方法没有返回值,经过尝试,该方法 是要将数组元素有小到大排列 如下图
swift 数组拓展---排序(sort() 方法)_第2张图片
这个方法没有返回值,是默认修改了原来数组。而不是生成了一个新数组。

再一个 sorted() 方法, 该方法返回一个排好序的新的数组,请注意,原数组的元素顺序依旧没有改变。 请看结果。
swift 数组拓展---排序(sort() 方法)_第3张图片
当然可以用 sortArr 来接收排好序的数组。

再一个 sortArr.sort(by: <#T##(Float, Float) throws -> Bool#>) 我现在不知道如何解释这样一种格式,好像是闭包,但是我会用,看如下代码

var sortArr : [Float] = [9.54,5.88,2.09,4.76,73.1,6.9,3.087]
        sortArr.sort { (num01, num02) -> Bool in
            return num01 > num02 ? true : false
        }
        print(sortArr)

最终的结果 将 原数组由大到小排列。 num01 和 num02 类似于形参,返回的bool值,类似于算法内部的判断条件。
请看结果
swift 数组拓展---排序(sort() 方法)_第4张图片
当然啦,如果想要有小到大排列 改写成 num01 < num02 即可。

最后一个 sortArr.sorted(by: <#T##(Float, Float) throws -> Bool#>) 这个方法与前面sorted 类似,返回一个全新的数组。

let sortArr : [Float] = [9.54,5.88,2.09,4.76,73.1,6.9,3.087]
        let endArr = sortArr.sorted { (num01, num02) -> Bool in
            return num01 > num02 ? true : false
        }
        print(endArr)
        print(sortArr)

可以定义全新的变量接收这个结果,也可以使用原来的值来接收

我是磊怀 QQ 2849765859

你可能感兴趣的:(IT,Swift)