Swift whit Xcode 使用冒泡排序,自定義Array數組排序方法,返回排序後的數組

Swift whit Xcode 使用冒泡排序,自定義Array<Any>數組排序方法,返回排序後的數組swift

1、設計思想:數組

    一、定義一個方法,此方法接受一個inout標識的可變數組參數和變量方法聲明(變量方法做用:參數值大小比較)測試

        方法參數說明:spa

        1-一、數組參數要設爲可變參數 在類型前用inout標記,這樣數組參數的索引值就能夠進行換位操做,不然在Swift的參數是不可變的,只能在方法體中定義一個新變量將數據參數賦給新聲明定義的變量;設計

        1-二、變量方法sortClosure的做用,用來判斷數組指定索引值的大小比較,返回true則數組不換位不然換位code

            sortClosure方法參數說明:對象

            1-2-一、接受任意類型的兩個對象值,用於mySortedArray方法索引位置對象的傳參,返回Bool值blog

    二、返回類型:排序後的數組排序

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

}

3、場景實試

        一、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)

        二、對象數組測試

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)

            }
相關文章
相關標籤/搜索