排序算法之希尔排序

ぐ巨炮叔叔 提交于 2019-12-16 04:24:30

希尔排序

/希尔排序(Shell’s Sort)是插入排序的一种又称“缩小增量排序”(Diminishing Increment Sort),是直接插入排序算法的一种更高效的改进版本。希尔排序是非稳定排序算法。
//希尔排序是基于插入排序的以下两点性质而提出改进方法的:
1.插入排序在对几乎已经排好序的数据操作时,效率高,即可以达到线性排序的效率。
2.但插入排序一般来说是低效的,因为插入排序每次只能将数据移动一位。

function shellsSort(arr: number[]) {
	let len = arr.length;
	for (let gap = Math.floor(len / 2); gap > 0; gap = Math.floor(gap / 2)) {//希尔排序中外层步长

		for (let i = gap; i < len; i++) {//开始插入排序
			for (let j = i - gap; j > 0 && arr[j] > arr[gap + j]; j -= gap) {//满足条件则插入
				let temp = arr[j];
				arr[j] = arr[gap + j];
				arr[gap + j] = temp;
			}
		}
	}
}
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!