国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 系統 > iOS > 正文

iOS常見的算法面試題及(swift)答案

2019-11-09 14:12:58
字體:
來源:轉載
供稿:網友

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 是對數組本身進行排序,也就是意味著 sort 方法會修改數組本身的內容。 而 sorted 就不會修改原有的數組,而是返回一個經過排序處理后的新的數組 arr.sort {$0 < $1} print(arr) print(arr.sorted {$0 < $1})}/** 倒序輸出 */func daoxu() { let str = "how are you" //先拆分成數組 let arr = str.characters.split(separator: " ").map(String.init) //倒序輸出 //reversed 方法可以將數組中的元素倒序排列 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))}/** 給定一個字符串,輸出本字符串中只出現一次并且最靠前的那個字符的位置?如“abaccddeeef”,字符是b,輸出應該是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)}/** 二分法查找(只實用于有序數組) */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之間的素數 */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) } }}/** 兩個整數的最大公約數 */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.}

}

希望能幫到大家!


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 南投县| 绥中县| 渭南市| 赣州市| 芜湖县| 长岛县| 达州市| 英超| 额敏县| 新巴尔虎右旗| 武定县| 宁津县| 咸阳市| 柳江县| 鄂伦春自治旗| 贵德县| 北宁市| 乐平市| 阳谷县| 池州市| 铜山县| 交口县| 嘉义县| 万宁市| 齐河县| 关岭| 泰安市| 高陵县| 莒南县| 盐源县| 铜梁县| 大田县| 固原市| 嘉祥县| 印江| 金秀| 忻州市| 柳林县| 西丰县| 格尔木市| 木里|