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、返回类型:排序后的数组

二、实现代码

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数组测试

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、对象数组测试

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)

            }

  

猜你喜欢

转载自www.cnblogs.com/CoolBreeze-SeclusionDream/p/12757738.html