希尔排序
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
以上是关于希尔排序的主要内容,如果未能解决你的问题,请参考以下文章