gpt4 book ai didi

C语言基本排序算法之shell排序实例

转载 作者:qq735679552 更新时间:2022-09-28 22:32:09 29 4
gpt4 key购买 nike

CFSDN坚持开源创造价值,我们致力于搭建一个资源共享平台,让每一个IT人在这里找到属于你的精彩世界.

这篇CFSDN的博客文章C语言基本排序算法之shell排序实例由作者收集整理,如果你对这篇文章有兴趣,记得点赞哟.

本文实例讲述了C语言基本排序算法之shell排序。分享给大家供大家参考,具体如下:

shell排序是对直接插入方法的改进方法. 。

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
/*-------------------------------------------------------------------------------------
Shell_sort.h
shell排序是对直接插入方法的改进,它并不是对相邻元素进行比较,而是对一定间隔的元素比较.
选择增量序列的几种方法:(为方便,本例采用第一种增量序列)
1. h[1]=size, h[k] = h[k-1]/2.
   最坏运行时间为O(N^2).
   最坏情形:数组长度为2^n,数组的偶数位置上同是一个数,奇数位置上也同是一个数,
        且比偶数位置的小。此时到最后一次遍历前shell排序实际上什么也没做。
        最后一次遍历相当于直接插入方法。
2. Hibbard增量序列: h = 1,3,7,,2^k-1
   这个的区别于上的主要的特点是相邻增量没有公因子
   最坏运行时间为O(n^{1.5});
3. Sedgewick增量序列:{1,5,19,41,109,}
-------------------------------------------------------------------------------------*/
#ifndef SHELL_SORT_H
#define SHELL_SORT_H
#include "typedef.h"
void Shell_sort(T* a, int n)
{
   for ( int gap = n; gap > 0; gap = gap/2)
   {
     for ( int i = 0; i != n; ++i)
     {
       T temp = a[i];
       int j = i - gap;
       for ( ; j >= 0 && a[j] > temp; j = j-gap)
         a[j+gap] = a[j];
       a[j+gap] = temp;
     }
   }
}
#endif

希望本文所述对大家C语言程序设计有所帮助.

原文链接:http://www.cnblogs.com/liyuxia713/archive/2009/04/22/2540780.html 。

最后此篇关于C语言基本排序算法之shell排序实例的文章就讲到这里了,如果你想了解更多关于C语言基本排序算法之shell排序实例的内容请搜索CFSDN的文章或继续浏览相关文章,希望大家以后支持我的博客! 。

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com