golang 希尔排序

Posted

tags:

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

// ShellSort performs the shell sort
func ShellSort(A []int, incr int) {
	for incr > 0 {
		for i := incr; i < len(A); i++ {
			j := i - incr
			for j >= 0 {
				if A[j] > A[j+incr] {
					A[j], A[j+incr] = A[j+incr], A[j]
					j -= incr
				} else {
					break
				}
			}
		}
		incr /= 2
	}
}

希尔排序

希尔排序

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

希尔排序的流程:

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

当需排序元素为奇数时:

当需排序元素为偶数时:

代码示例:

代码实现就是在插入排序的代码上进行操作,加入了一个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
	

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

golang 希尔排序

golang 希尔排序

❤️数据结构入门❤️(4 - 8)- 希尔排序

希尔排序的介绍和希尔排序基本思想以及代码实现

希尔排序

希尔排序