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

前两篇博客写了在使用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

版权声明:本文为weixin_43883776原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/weixin_43883776/article/details/90520591

智能推荐

Swift - 选择排序算法

思想 每一次从待排序的数据元素中选出最小(或最大)的一个元素,存放在序列的起始位置,直到全部待排序的数据元素排完。 步骤 找到第一小(大)的元素,放在第一个位置 找到从第二个元素到末尾的元素中第二下(大)的元素,放入第二个位置 以此类推 代码 结果 特性 时间复杂度 : O(n^2) == n的平方 稳定性 : 不稳定 其他 新blog地址 www.livefor.cn...

【JUC】004-ReadWriteLock读写锁

目录 一、ReadWriteLock读写锁 1、概述 官方文档介绍: 2、问题引出 代码实现: 运行结果: 问题: 3、使用读写锁 代码实现: 运行结果: 4、分析 一、ReadWriteLock读写锁 1、概述 官方文档介绍: 读可以多个线程读,写只能一个线程写;   2、问题引出 代码实现: 运行结果: 问题: 出现了多线程不安全的问题,我们要实现的是“读可以多个线程读,...

Spring Boot 2.x基础教程:使用 ECharts 绘制各种华丽的数据图表

个人博客导航页(点击右侧链接即可打开个人博客):大牛带你入门技术栈  通常,这类需求在客户端应用中不太会用到,但是在后端的各种统计分析模块会经常碰到。比如:通过折线图、柱状图、雷达图等可视化形式,更直观的展现和分析经营状况或系统运行情况。这里我们将引入的数据可视化组件库 ECharts来帮助我们完成这样的任务。 ECharts简介 ECharts是百度开源的一个前端组件。它是一个使用 J...

Java数据结构和算法之环形队列

实现原理: 代码实现: 总结: 思路并不太难,主要是理解rear和front相等时歧义的消除。如果对为什么每次移动rear和front都 取模以及判断有效值个数的时候的取模等操作不太理解,就画图看下,你就懂了。...

前端打印页面window.print(),会把页面把A标签里面的href属性也给打印出来解决办法

一、问题描述: 大家都知道用window.print()可以实现调用浏览器的打印功能从而打印系统页面 但是直接用window.print()会把A标签里面的href属性也给打印出来了,如下图所示   二、解决办法 解决办法也很简单,只要加上如下css代码就可以啦 三、最后对自己说的  做梦也没想到自己也能有30个粉丝,有的文章还被人收藏了,嘻嘻嘻,超开心啊!  虽然我...

猜你喜欢

kubernetes 资源清单 initC

编写配置验证initC 编写 init-pod.yaml文件 执行init-pod.yaml文件 查看Pod创建的具体运行状态 这里可能会有无用pod干扰 建议先删除无用pod 查看Pod初始化日志 编写myservice.yaml文件 执行myservice.yaml文件 再次查看pod状态 编写mydb.yaml文件 执行mydb.yaml文件 再次查看Pod状态 学习笔记来源。1 尚硅谷ku...

idea部署远程主机姿势

希望有一天大家都能在借鉴中创新 关键词: 接口服务;自动部署;快速开发 主题: 对于前后端分离的项目往往需要在开发完成一个迭代周期的时候更新部署的服务,常规的操作往往是:clean -> package -> xshell -> sftp -> start。 简单的项目往往每天都需要进行这种操作N次,如果开发支持jenkins环境,可以配置自动脚本进行打包部署,甚至是完成各...

3.4 CNN卷积神经网络基础知识-ReLU**函数(百度架构师手把手带你零基础实践深度学习原版笔记系列)

3.4 CNN卷积神经网络基础知识-ReLU**函数(百度架构师手把手带你零基础实践深度学习原版笔记系列)   ReLU**函数 前面介绍的网络结构中,普遍使用Sigmoid函数做**函数。在神经网络发展的早期,Sigmoid函数用的比较多,而目前用的较多的**函数是ReLU。这是因为Sigmoid函数在反向传播过程中,容易造成梯度的衰减。让我们仔细观察Sigmoid函数的形式...

在 AWS上域名备案流程和文件

AWS北京地区是由 光环新网运营,所以 aws 北京地区 ICP 备案 需要提交资料到 光环新网 ,由 光环新网 公司审核后才可以。 备案流程 第一步 请您将注册 AWS 云业务 Account ID 的截图发送至 光环新网 邮箱,具体样式请参见下图。光环新网 需要据此截图进行核对。 1、如果您有一个 Account ID ,请提供对应的 Account ID 2、如果您有多个 Account I...

官方重磅!国产统一操作系统 UOS 20 正式版发布

公众号关注 “GitHubDaily” 设为 “星标”,带你了解圈内新鲜事! 来源:统信软件 官方重磅! 统一操作系统 UOS 正式版面向合作伙伴发布! 统一操作系统是由统信软件开发的一款基于 Linux 内核的操作系统,支持龙芯、飞腾、兆芯、海光、鲲鹏等芯片平台的笔记本、台式机、一体机和工作站,以及服务器。统一桌面操作系统以桌面应用场景为...