• 一种基于插入排序的快速排序。简单插入对于大规模乱序数组很慢,因为元素只能一点点地从数组一端移动到另一端。
  • 希尔排序为了加速简单地改进了插入排序,也称为缩小增量排序。
  • 把记录按下表的一定增量分组,对每组使用直接插入排序算法排序。缩小增量继续分组,随着增量减少,每组关键词越来越多,增量减少至1,整个文件恰备分成一组,再次排序,完成整个数组的排序。不断缩小的增量,就构成一个增量排序
  • Swift ↓
	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
	}