import UIKit
class ViewController: UIViewController {
override func viewDidLoad() { super.viewDidLoad() // Do any additional setup after loading the view, typically from a nib. // paixu() // daoxu() // shaixuan() // xunzao() // erfenfa() // PRint(digui()) // sushu() gongyueshu(a: 55, b: 100)}/** 冒泡排序 */func paixu() { var arr = [24,17,85,13,9,54,76,45,5,63] for i in 0..<arr.count { for j in 0..<arr.count - 1 - i { if arr[j] < arr[j + 1] { let tmp = arr[j] arr[j] = arr[j+1] arr[j+1] = tmp } } } print(arr) //sort 是對數(shù)組本身進(jìn)行排序,也就是意味著 sort 方法會修改數(shù)組本身的內(nèi)容。 而 sorted 就不會修改原有的數(shù)組,而是返回一個經(jīng)過排序處理后的新的數(shù)組 arr.sort {$0 < $1} print(arr) print(arr.sorted {$0 < $1})}/** 倒序輸出 */func daoxu() { let str = "how are you" //先拆分成數(shù)組 let arr = str.characters.split(separator: " ").map(String.init) //倒序輸出 //reversed 方法可以將數(shù)組中的元素倒序排列 let arr1 = Array(arr.reversed()) print(arr1) for item in arr1 { print(item) }}/** 篩選 */func shaixuan() { let arr = [2,3,4,5,4,3,7,8,3] //用集合最簡單 let set = Set(arr) let arr1 = Array(set) print(arr1) //字典篩選key var dic = Dictionary<Int, Any>() for item in arr { dic[item] = item } print(Array(dic.keys))}/** 給定一個字符串,輸出本字符串中只出現(xiàn)一次并且最靠前的那個字符的位置?如“abaccddeeef”,字符是b,輸出應(yīng)該是2 */func xunzao() { let str = "abaccddeeef" var arr = Array<Character>() var arr1 = Array<Character>() for item in str.characters { if arr.contains(item) { arr1.append(item) }else{ arr.append(item) } } var arr2 = Array<Character>() var arr3 = Array<Character>() for item in str.characters { if !arr1.contains(item) { arr2.append(item) } arr3.append(item) } print(arr3.index(of: arr2.first!)! + 1)}/** 二分法查找(只實(shí)用于有序數(shù)組) */func erfenfa() {//36 let tmp = 36 var array = [1, 2, 50, 3, 9, 5, 5, 7, 10, 36] //先排序 array.sort() print(array) var left = 0 var right = (array.count - 1) while left <= right { let mid = (left + right) / 2 let value = array[mid] if value == tmp { return } if value < tmp { left = mid + 1 } if value > tmp { right = mid - 1 } }}/** 遞歸法查找 */var left = 0func digui() -> Int { let tmp = 36 var array = [1, 2, 50, 3, 9, 5, 5, 7, 10, 36] let right = (array.count - 1) var mid = (left + right) / 2 let value = array[mid] if left > right { return -1 }else{ left += 1 if value == tmp { return mid }else if value > tmp { mid = mid - 1 return self.digui() }else{ mid = mid + 1 return self.digui() } }}/** 2-100之間的素?cái)?shù) */func sushu() { for i in 2..<100 { var r : Int = 1 for j in 2..<i { if i%j == 0 { r = 0 break } } if r == 1 { print(i) } }}/** 兩個整數(shù)的最大公約數(shù) */func gongyueshu( a:Int, b:Int) { var a = a var b = b var tmp = 0 if a < b { tmp = a a = b b = tmp } while b != 0 { tmp = a%b a = b b = tmp } print(a)}override func didReceiveMemoryWarning() { super.didReceiveMemoryWarning() // Dispose of any resources that can be recreated.}}
希望能幫到大家!
新聞熱點(diǎn)
疑難解答
圖片精選