Swift 归并排序

来源:互联网 发布:苹果视频制作软件 编辑:程序博客网 时间:2024/06/03 20:38

用Swift写的一个归并排序算法(递归法)

func Merge(sourceArray: NSMutableArray, tempArray: NSMutableArray, startIndex: Int, midIndex: Int, endIndex: Int) {    var i = startIndex    var j = midIndex + 1    var k = startIndex            while(i != midIndex+1 && j != endIndex+1) {        let one = sourceArray[i] as! Int        let two = sourceArray[j] as! Int        if one >= two {            tempArray.insertObject(sourceArray[j], atIndex: k)            j += 1            k += 1        }else {            tempArray.insertObject(sourceArray[i], atIndex: k)            i += 1            k += 1        }    }    while(i != midIndex+1) {        tempArray.insertObject(sourceArray[i], atIndex: k)        i += 1        k += 1    }    while(j != endIndex+1) {        tempArray.insertObject(sourceArray[j], atIndex: k)        j += 1        k += 1    }            for i in startIndex...endIndex {        sourceArray.replaceObjectAtIndex(i, withObject: tempArray[i])    }}    func MergeSort(sourceArray: NSMutableArray, tempArray: NSMutableArray, startIndex: Int, endIndex: Int) {    var midIndex = 0    if startIndex < endIndex {        midIndex = (startIndex + endIndex)/2        MergeSort(sourceArray, tempArray: tempArray, startIndex: startIndex, endIndex: midIndex)        MergeSort(sourceArray, tempArray: tempArray, startIndex: midIndex+1, endIndex: endIndex)        Merge(sourceArray, tempArray: tempArray, startIndex: startIndex, midIndex: midIndex, endIndex: endIndex)    }}

从小到大排列。

6 0
原创粉丝点击