Swift 几种排序实现
发布时间:2020-12-14 06:36:03 所属栏目:百科 来源:网络整理
导读:import UIKitvar str = "Hello,playground"var arry = [12,32,12,43,54,23,2,1,65,123,3]//插入排序for index in 1..arry.count { var key = arry[index] var i = index - 1 while (i = 0 arry[i] key) { arry[i+1] = arry[i] i = i - 1 } arry[i+1] = key}p
import UIKit var str = "Hello,playground" var arry = [12,32,12,43,54,23,2,1,65,123,3] //插入排序 for index in 1..<arry.count { var key = arry[index] var i = index - 1 while (i >= 0 && arry[i] > key) { arry[i+1] = arry[i] i = i - 1 } arry[i+1] = key } print(arry) arry = [12,3] //选择排序 for i in 0..<arry.count { for j in i+1..<arry.count { if (arry[i] >= arry[j]) { var temp = arry[j] arry[j] = arry[i] arry[i] = temp } } } print(arry)var arry = [12,3] //分治法 func merge (p:Int,q:Int,r:Int) -> Array<Int> { print("A",arry,"p",p,"q",q,"r",r) // let n1:Int = q - p+1 print(n1) let n2:Int = r - q print(n2) var L = [Int](repeating: 1000,count: n1+1) var R = [Int](repeating: 1000,count: n2+1) for i in 0..<n1 { L[i] = arry[p+i] } for j in 0..<n2 { R[j] = arry[q+j+1] } print("L",L,"R",R) var i = 0 var j = 0 for k in p...r{ if (L[i]<=R[j]) { arry[k] = L[i] i = i + 1 }else { arry[k] = R[j] j = j + 1 } } return arry } func merge_sort (arry:[Int],p:Int,r:Int) { if (p < r) { let q = (p+r)/2 print(p,r) merge_sort(arry: arry,p: p,r: q) merge_sort(arry: arry,p: q+1,r: r) let a = merge(p: p,q: q,r: r) print(a) } } merge_sort(arry: arry,p: 0,r: 12) (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |