Swift 排序之sort函数

作者: 槛内浊物 | 来源:发表于2015-12-19 17:49 被阅读4805次

前言

在OC中对一个数组排序,以及字典的排序往往都是自己写一个函数去实现。swift中就不用再自己再去做这样的事了。Swift提供了sort函数,可以让数组和字典很方便的实现排序。

简单使用

降序
let a = ["2","1","3"]
let t = a.sort { (s1, s2) -> Bool in
    return s1 > s2
}
print("\(t)")//打印结果:["3", "2", "1"]
升序
let a = ["2","1","3"]
let t = a.sort { (s1, s2) -> Bool in
    return s1 < s2
}
print("\(t)")//打印结果:["1", "2", "3"]

但是这就完了吗?
嘿嘿,下面我们让代码进化(以下只以升序为例)

进化版

let a = ["2","1","3"]
let t = a.sort{$0<$1}
print("\(t)")//打印结果:["1","2","3"]

瞬间提升一个档次,瞬间感觉高大上,$0,$1这是什么鬼???其实在Swift中闭包参数是可以缺省的,可以直接省略参数类型和参数名,用$0代表闭包的第一个参数,$1代表闭包的第二个参数......以此类推。同时也可以省略in关键字。

但是。。。这完了吗?
嘿嘿嘿嘿嘿,下面看下究极进化

究极进化版

let a = ["2","1","3"]
let t = a.sort(<)
print("\(t)")//打印结果:["1","2","3"]

我X,代码可以省略到这种程度。你是不是已经蠢蠢欲动,想要敲一遍代码自己试验一下了。

Dictionary版

基础版

1.根据key排序

let dic = ["1":"c","3":"a","2":"b"]
let result = dic.sort { (str1, str2) -> Bool in
    return str1.0 < str2.0
}
print(result)//打印结果:[("1", "c"), ("2", "b"), ("3", "a")]

2.根据value排序

let dic = ["1":"c","3":"a","2":"b"]
let result = dic.sort { (str1, str2) -> Bool in
    return str1.1 < str2.1
}
print(result)//打印结果:[("1", "c"), ("2", "b"), ("3", "a")]

升级版

1.根据key排序

let dic = ["1":"a","3":"c","2":"b"]
let result = dic.sort {$0.0 < $1.0}
print(result)//打印结果:[("1", "a"), ("2", "b"), ("3", "c")]

2.根据value排序

let dic = ["1":"a","3":"c","2":"b"]
let result = dic.sort {$0.1 < $1.1}
print(result)//打印结果:[("1", "a"), ("2", "b"), ("3", "c")]

这里不能直接用">"或者"<"

相关文章

  • 常用排序算法学习(swift版)

    前言 之前写过一篇Swift排序之sort函数,里面仅仅写了sort函数怎么使用。今天用一些常用的算法,试着实现一...

  • Swift 排序之sort函数

    前言 在OC中对一个数组排序,以及字典的排序往往都是自己写一个函数去实现。swift中就不用再自己再去做这样的事了...

  • sort()和sorted()的区别

    sort()函数排序和sorted()函数排序区别-sorted不改变原值,而sort()改变原值 sort函数没...

  • Swift-sort排序函数

    前言 在OC中对一个数组排序,以及字典的排序往往都是自己写一个函数去实现。swift中就不用再自己再去做这样的事了...

  • sort函数的使用

    sort排序又叫快速排序(快排)1、需要引入头文件 2、sort函数的引用 默认的sort函数是按升序排。sort...

  • 《算法笔记》4.1

    4.1.1选择排序 4.1.2插入排序 4.1.3排序题与sort函数的应用 6.9.6关于sort函数 头文件 ...

  • 数组排序相关

    数组排序相关 结合sort和函数排序: 数组由小到大进行排序:sort,sortnum; vararr = [...

  • js数组排序

    1、sort方法 sort在原数组上进行排序,不生成副本。sort接受一个函数参数,该函数定义排序规则。如果不传参...

  • 基本排序算法

    选择排序 插入排序 冒泡排序 中 sort 函数使用

  • c++算法常用函数

    利用sort函数排序: sort(arr,arr+index); 字符串逆置函数: _strrev()...

网友评论

  • Weartist:在OC中对一个数组排序,以及字典的排序往往都是自己写一个函数去实现。swift中就不用再自己再去做这样的事了。Swift提供了sort函数,可以让数组和字典很方便的实现排序。
    oc怎么没有排序方法...醉了
    槛内浊物:@Weartist 我知道,我只是猜测系统实现。oc是object,swift是值类型,不过你可以自己写一个扩展实现。你在写swift数组的时候,数组内的类型是确定的。但是oc是若类型,你无法对一个不确定的类型进行排序。
  • _Choice_:dic基础版本根据value排序写错了
    槛内浊物:@_Choice_ 多谢提醒
  • 77c6528bdab9:最后两个例子dic发生变化了,结果貌似不对
    槛内浊物:@神学院卡爹 已改
  • Waisti:好👏

本文标题:Swift 排序之sort函数

本文链接:https://www.haomeiwen.com/subject/txaphttx.html