前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >关于数据进行排序小研究

关于数据进行排序小研究

作者头像
君赏
发布2018-08-31 16:15:04
6700
发布2018-08-31 16:15:04
举报
文章被收录于专栏:君赏技术博客君赏技术博客

最近遇到一个问题就是把城市按照首字母进行排序并且首字母排序进行依次排序。

我之前知道数组有排序的方法,但是没怎么用过,今天研究一下。

下面是一个数组要进行字母排序。

代码语言:javascript
复制
let oldTitleList = ["BCDA","ABCD","ADCB","ACDB","BDAC","DACB","CADB"]

我们利用系统的方法进行排序

官方的说明如下: sorted(by:) 参数:areInIncreasingOrder 如果第一个参数应在第二个参数之前排序,则返回true否则是false。 当您要对不符合Comparable协议的元素集合进行排序时,请将predicate传递给此方法,当第一个元素在第二个元素之前排序时,该方法返回true。 结果数组的元素根据给定的predicate排序。 predicate必须是对元素的严格弱排序。 也就是说,对于任何元素a,b和c,必须满足以下条件:

  • areInIncreasingOrder(a,a)总是返回false
  • 如果areInIncreasingOrder(a,b)areInIncreasingOrder(b,c)都为true,那么areInIncreasingOrder(a,c)也为true
  • 两个元素是不可比较的,如果两者都不根据predicate在另一个之前排序。 如果a和b是不可比较的,并且b和c是不可比的,则a和c也是不可比的。

排序算法不稳定。 不稳定排序可以更改areInIncreasingOrder不建立顺序的元素的相对顺序。 在以下示例中,predicate为自定义HTTPResponse类型的数组提供了排序。 predicate在成功之前对错误进行排序,并按错误代码对错误响应进行排序。 enum HTTPResponse { case ok case error(Int) } let responses: [HTTPResponse] = [.error(500), .ok, .ok, .error(404), .error(403)] let sortedResponses = responses.sorted { switch ($0, $1) { case let (.error(aCode), .error(bCode)): return aCode < bCode case (.ok, .ok): return false case (.error, .ok): return true case (.ok, .error): return false } } print(sortedResponses) // Prints "[.error(403), .error(404), .error(500), .ok, .ok]" 您还可以使用此方法按降序顺序对符合“可比较”协议的元素进行排序。 要按降序对集合进行排序,请将greater-than运算符(>)作为areInIncreasingOrder参数传递。 let students: Set = ["Kofi", "Abena", "Peter", "Kweku", "Akosua"] let descendingStudents = students.sorted(by: >) print(descendingStudents) // Prints "["Peter", "Kweku", "Kofi", "Akosua", "Abena"]" 调用相关的sorted()方法等效于调用此方法并传递小于操作符(<)作为谓词。 print(students.sorted()) // Prints "["Abena", "Akosua", "Kofi", "Kweku", "Peter"]" print(students.sorted(by: <)) // Prints "["Abena", "Akosua", "Kofi", "Kweku", "Peter"]"

代码语言:javascript
复制
let sordArray = oldTitleList.sorted()

Log如下

代码语言:javascript
复制
  - 0 : "ABCD"
  - 1 : "ACDB"
  - 2 : "ADCB"
  - 3 : "BCDA"
  - 4 : "BDAC"
  - 5 : "CADB"
  - 6 : "DACB"

这是Swift数组Array排序的方法,以后仔细研究一下其他的排序。

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2016.12.10 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档