经典排序算法---希尔排序

Posted INnoVation-V2

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了经典排序算法---希尔排序相关的知识,希望对你有一定的参考价值。

希尔排序(Shell Sort)是插入排序的一种。也称缩小增量排序,是直接插入排序算法的一种更高效的改进版本。希尔排序是非稳定排序算法。

希尔排序是把记录按下标的一定增量分组,对每组使用直接插入排序算法排序;随着增量逐渐减少,每组包含的关键词越来越多,当增量减至1时,整个文件恰被分成一组,算法便终止

由于多次插入排序,我们知道一次插入排序是稳定的,不会改变相同元素的相对顺序,但在不同的插入排序过程中,相同的元素可能在各自的插入排序中移动,最后其稳定性就会被打乱,所以shell排序是不稳定的

代码:

void ShellSort(struct SQ_LIST *v) {
	int i, j, gap, n = v->Length;
	for (gap = n / 2; gap > 0; gap /= 2)
		for (i = gap; i < n; i++)
			for (j = i - gap; j >= 0 && v->elem[j].ID > v->elem[j + gap].ID; j -= gap)
				swap(v->elem[j].ID, v->elem[j + gap].ID);
}

  

以上是关于经典排序算法---希尔排序的主要内容,如果未能解决你的问题,请参考以下文章

经典排序希尔排序

吴裕雄--天生自然数据结构:十大经典排序算法——希尔排序

十大经典排序(下)——Python3实现

逻辑知识: 希尔排序

十大经典排序算法总结(希尔排序)

算法:希尔排序