前两篇博客写了在使用swift写冒泡排序和选择排序,实在是遇到了很多坑,在使用forin循环时。也着实遇到了不少隐藏的点。但是swift 提供了可供使用的 排序的方法,如下图:
var sortArr : [Float] = [9.54,5.88,2.09,4.76,73.1,6.9,3.087]
print(sortArr)
先来一个数组吧
最常用的算是 前四个方法,我来挨个试一下,这四个方法是如何使用的,分别有什么效果
头一个 sort()
方法,这里要注意一下,该方法没有返回值,经过尝试,该方法 是要将数组元素有小到大排列 如下图
这个方法没有返回值,是默认修改了原来数组。而不是生成了一个新数组。
再一个 sorted()
方法, 该方法返回一个排好序的新的数组,请注意,原数组的元素顺序依旧没有改变。 请看结果。
当然可以用 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值,类似于算法内部的判断条件。
请看结果
当然啦,如果想要有小到大排列 改写成 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