diff --git a/Shell Sort/README.markdown b/Shell Sort/README.markdown index c21c29685..72375e51b 100644 --- a/Shell Sort/README.markdown +++ b/Shell Sort/README.markdown @@ -117,24 +117,10 @@ Here is an implementation of Shell Sort in Swift: var arr = [64, 20, 50, 33, 72, 10, 23, -1, 4, 5] public func shellSort(_ list: inout [Int]) { - var sublistCount = list.count / 2 - while sublistCount > 0 { - - for index in 0.. list[index + sublistCount] { - swap(&list[index], &list[index + sublistCount]) - } - - guard sublistCount == 1 && index > 0 else { continue } - - if list[index - 1] > list[index] { - swap(&list[index - 1], &list[index]) - } + for pos in 0..=4.0) + print("Hello, Swift 4!") +#endif + +public func insertionSort(_ list: inout [Int], start: Int, gap: Int) { + for i in stride(from: (start + gap), to: list.count, by: gap) { + let currentValue = list[i] + var pos = i + while pos >= gap && list[pos - gap] > currentValue { + list[pos] = list[pos - gap] + pos -= gap + } + list[pos] = currentValue + } +} + +public func shellSort(_ list: inout [Int]) { + var sublistCount = list.count / 2 + while sublistCount > 0 { + for pos in 0.. + + + \ No newline at end of file