funcshellSort(array: inout [Int]) -> [Int] { let n = array.count //初始步长 var gap = n / 2 while gap > 0 { for i in gap..<n { //插入排序 let temp = array[i] var j = i while j >= gap && array[j-gap] > temp { array[j] = array[j-gap] j -= gap } array[j] = temp } //新步长 gap = gap / 2 } print(array) return array }
例子
1 2 3 4
var shellArray = [49,38,65,97,76,13,27,49,55,4] shellSort(array: &shellArray)