Shell排序

网友投稿 571 2022-08-24

Shell排序

Shell排序

Shell排序:一种插入排序。

距离的概念:两个数之间的间隔i个数,这两个数的距离就为i 例如:1,2,3,4,5,6,7,8。1和2的距离为1;1和3的距离为2。 基本思想:先取一个增量d1数据按插入排序排序。接着取d2

/*Shell排序: O(nlogn) 设定一个元素间隔的增量nGap,将参加排序的元素按这个间隔数nGap从第1个元素开始依次分为若干个 子序列,分别对这些子序列排序。重复下去,直到间隔数减少为1。(间隔数每次除以2递减可以保证最后一次间隔数为1)*/#include #include using namespace std;#define N 16void PrintArr(int *pnArr, int nLen){ int i; for (i = 0; i < nLen; i++) { cout< 0; nGap /= 2) { for (i = nGap; i < nLen; i++) { nTmp = pnArr[i]; for (j = i; j > 0 && nTmp < pnArr[j-nGap]; j-= nGap) { pnArr[j] = pnArr[j-nGap]; } pnArr[j] = nTmp; } PrintArr(pnArr, nLen); }}int main(){ int nArr[N] = {0}; int i; srand(time(NULL)); for (i = 0; i < N; i++) { nArr[i] = rand() % 100; } PrintArr(nArr, N); ShellSort(nArr, N); return 0;}

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:浅谈iOS的文件操作(ios里的文件怎么用)
下一篇:编码过程中,需要注意的地方(编码时应注意的问题)
相关文章

 发表评论

暂时没有评论,来抢沙发吧~