加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

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)

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读