let nums = [] let len = nums.count var current, gap = len /2 while (gap > 0) { for i in gap ..< len { current = nums[i] // 数组里 已经被排序的索引 let preIndex = i - gap // 数组内已经被排序过数据中倒序寻找合适的位置,如果当前的比较元素小,则在组内往后移动一位 while preIndex >= 0 && nums[preIndex]> currentValue { nums[preIndex + gap] = nums[preIndex] preIndex -= gap } nums[preIndex + gap] = current } gap /= 2 }