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)
 
            }

  

posted @   清风幽梦  阅读(341)  评论(0编辑  收藏  举报
编辑推荐:
· 一个费力不讨好的项目,让我损失了近一半的绩效!
· .NET Core 托管堆内存泄露/CPU异常的常见思路
· PostgreSQL 和 SQL Server 在统计信息维护中的关键差异
· C++代码改造为UTF-8编码问题的总结
· DeepSeek 解答了困扰我五年的技术问题
阅读排行:
· 一个费力不讨好的项目,让我损失了近一半的绩效!
· 清华大学推出第四讲使用 DeepSeek + DeepResearch 让科研像聊天一样简单!
· 实操Deepseek接入个人知识库
· CSnakes vs Python.NET:高效嵌入与灵活互通的跨语言方案对比
· Plotly.NET 一个为 .NET 打造的强大开源交互式图表库
点击右上角即可分享
微信分享提示