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