Swift whit Xcode 使用冒泡排序,自定义Array<Any>数组排序方法,返回排序后的数组
Swift whit Xcode 使用冒泡排序,自定义Array<Any>数组排序方法,返回排序后的数组
一、设计思想:
1、定义一个方法,此方法接受一个inout标识的可变数组参数和变量方法声明(变量方法作用:参数值大小比较)
方法参数说明:
1-1、数组参数要设为可变参数 在类型前用inout标记,这样数组参数的索引值就可以进行换位操作,否则在Swift的参数是不可变的,只能在方法体中定义一个新变量将数据参数赋给新声明定义的变量;
1-2、变量方法sortClosure的作用,用来判断数组指定索引值的大小比较,返回true则数组不换位否则换位
sortClosure方法参数说明:
1-2-1、接受任意类型的两个对象值,用于mySortedArray方法索引位置对象的传参,返回Bool值
2、返回类型:排序后的数组
二、实现代码
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 | func mySortedArray (数组 array : inout Array < Any > , sortClosue :( Any , Any )- > Bool )- > Array < Any > { for i in 0 .. < array . count { //如果数组中只有一个对角则跳出循环 if 0 == array . count - 1 { break } //Swift中for循环中不必考虑i和j变量nil或越界问题,Swift会自动处理 for j in i + 1 .. < array . count { if sortClosue ( array [ i ], array [ j ]){} //如果对比值为false则交换数据索引指定值Val的位置 else { array . swapAt ( i , j ) } } } return array } |
三、场景实试
1、Int数组测试
1 2 3 4 5 6 7 | var list : Array < Any > =[ 3 , 5 , 2 , 1 , 4 , 2 , 53 , 2 , 4 , 787 , 5 , 4 , 3 ] list = mySortedArray (数组: & list , sortClosue : {( minVal : Any , maxVal : Any ) in return maxVal as ! Int > minVal as ! Int }) print ( list ) |
2、对象数组测试
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 | class Student { var name : String //姓名 var achievment : UInt //成绩 init ( name : String , achievment : UInt ) { self . name = name self . achievment = achievment } } var stuArr : Array < Any > = [ Student . init ( name : "明月" , achievment : 98 ), Student . init ( name : "赵六" , achievment : 89 ), Student . init ( name : "落花" , achievment : 96 ), Student . init ( name : "阿良" , achievment : 90 ), Student . init ( name : "张三" , achievment : 78 )] stuArr = mySortedArray (数组: & stuArr , sortClosue : {($ 0 as ! Student ). achievment > ($ 1 as ! Student ). achievment }) for student in stuArr { print (( student as ! Student ). name ,( student as ! Student ). achievment ) } |
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 一个费力不讨好的项目,让我损失了近一半的绩效!
· .NET Core 托管堆内存泄露/CPU异常的常见思路
· PostgreSQL 和 SQL Server 在统计信息维护中的关键差异
· C++代码改造为UTF-8编码问题的总结
· DeepSeek 解答了困扰我五年的技术问题
· 一个费力不讨好的项目,让我损失了近一半的绩效!
· 清华大学推出第四讲使用 DeepSeek + DeepResearch 让科研像聊天一样简单!
· 实操Deepseek接入个人知识库
· CSnakes vs Python.NET:高效嵌入与灵活互通的跨语言方案对比
· Plotly.NET 一个为 .NET 打造的强大开源交互式图表库