希尔排序

Posted 宣哲

tags:

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

希尔排序

希尔排序是基于插入排序思想上的,也是基于插入排序代码实现的。

希尔排序的流程:

其实当元素个数为奇数和偶数时,没太大区别,只是分段的多一个少一个罢了。

当需排序元素为奇数时:

当需排序元素为偶数时:

代码示例:

代码实现就是在插入排序的代码上进行操作,加入了一个jump,然后将代码中的1全部替换为jump。

void shell_sort(int parr[], int len)	//希尔排序

	int	j;
	int tempval;
	int jump = len >> 1;	//jump为数组长度一半的大小
	while (jump != 0)	//循环插入
	
		for (int i = jump; i < len; ++i)
		
			tempval = parr[i]; 
			j = i - jump; 
			while (j >= 0 && tempval < parr[j])
			
				parr[j + jump] = parr[j];
				j = j - jump;
			
			parr[j + jump] = tempval;
		
		jump >>= 1;	//jump除等于2
	

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

希尔排序

希尔排序

希尔排序

6.4 希尔排序

希尔排序

基础排序算法三——希尔排序