用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,endindex: Int) {
var midindex = 0
if startIndex < endindex {
midindex = (startIndex + endindex)/2
MergeSort(sourceArray,tempArray: tempArray,startIndex: startIndex,endindex: midindex)
MergeSort(sourceArray,startIndex: midindex+1,endindex: endindex)
Merge(sourceArray,midindex: midindex,endindex: endindex)
}
} 从小到大排列。