希尔排序C语言实现
2022-04-01 12:17:05 26
导语:C语言的设计目标是提供一种能以简易的方式编译、处理低级存储器、产生少量的机器码以及不需要任何运行环境支持便能运行的编程语言。下面我们来看看希尔排序(C语言实现),希望对大家有所帮助。
希尔排序的基本思想是:先将整个待排序列分割成若干子序列分别进行进行直接插入排序,等到整个待排序列基本有序时,再对全体记录依次进行直接插入排序。希尔排序也叫缩小增量排序,是1959年由D.L.Shell提出来的。
希尔排序的具体实现方法和步骤:
a、选择一个步长序列d1,d2,d3,...,dk,其中,di > dj,dk = 1;
b、按步长序列个数K对序列进行K趟排序
c、每趟排序,根据对应的步长di进行分组,即将待排序的记录序列所有距离为di的记录放在同一组中,如此可将待排序列分割成若干个长度为m的子序列,分别对各组进行直接插入排序。当dk=1时,整个序列作为一个表来处理,表长度即为整个序列的长度,整个排序结束。
具体的希尔排序函数实现如下(按照逐渐递增来进行排序):
/* 希尔排序算法的简单实现
* array[] : 要排序的数组
* length : 要排序的数组的长度
* d[] : 增量值数组
* number : 增量值个数
*/
void shell_sort(int array[],int length,int d[],int number)
{
int i,j,k,m;
int span; // 用于存放具体增量的'数值
int temp; // 用于存放临时的待排序元素的值
for(m = 0; m < number; m++)
{
span = d[m]; // 获取增量值
for(k = 0; k < span; k++)
{
for(i = k; i < length-1; i += span)
{
temp = array[i + 1];
j = i;
while((j > -1) && (temp < array[j]))
{
array[j + 1] = array[j];
j--;
}
array[j + 1] = temp;
}
}
}
}
测试函数的实现如下:
/* 程序的入口函数 */
int main()
{
int a[ARRAY_LENGTH];
int i;
int d[3] = {5,3,1}; // 定义一个表示增量值的数组
/* 输入10个整形元素 */
printf("Input %d numbers :
",ARRAY_LENGTH);
for(i = 0; i < ARRAY_LENGTH; i++)
{
scanf("%d",&a[i]);
}
printf("****************************************************************
");
/* 把排序前元素都打印出来 */
printf("The elements before sort is :
");
for(i = 0; i< ARRAY_LENGTH; i++)
{
printf("%d ",a[i]);
}
printf("
");
printf("****************************************************************
");
/* 对元素进行有小到大的直接插入排序 */
shell_sort(a,ARRAY_LENGTH,d,sizeof(d)/sizeof(d[0]));
/* 把排序后元素都打印出来 */
printf("The elements after sort is :
");
for(i = 0; i < ARRAY_LENGTH; i++)
{
printf("%d ",a[i]);
}
printf("
");
return 0;
}
- 上一篇:希尔排序是什么
- 下一篇:希望就在前方-班主任寄语
- 标签列表
-
- 作文
- 其他类
- 体裁作文
- 节日作文
- 高中作文
- 小学生作文
- 语文
- 美文
- 教育
- 句子
- 阅读
- 古诗文
- 文学赏析
- 大全
- 问答
- 读后感
- 写作指导
- 外语
- 外语课堂
- 名著阅读
- 字数作文
- 祝福语
- 词汇
- 爱好
- 唐代诗人
- 作文素材
- 学历类
- 瑞文网
- 交际礼仪文书
- 歌词
- 高考
- 散文
- 励志
- 观后感
- 古籍
- 计算机类
- 职场
- 造句
- 教案
- 外语类
- 资格证类
- 古诗
- 语录名言
- 阅读答案
- 人物作文
- 书画
- 学科教育
- 句子大全
- 日常行政公文
- 总结
- 课文大全
- 规章制度
- 知识
- 宋代诗人
- 板报大全
- 成语大全
- 近义词
- 诗词
- 工作总结
- 初一作文
- 手抄报
- 诗
- 试题
- 优美句子
- 节日庆典
- 职业技能
- 诗句
- 好词好句
- 诗歌
- 春节
- 现代作家
- 关于什么的作文
- 事务文书
- 名言语录
- 求学指南
- 高校排名
- 素材
- 自然作文
- 教学设计
- 书信函范文
- 词语
- 学生范文
- 大学
- 对联
- 读后感大全
- 演讲稿
- 琴棋
- 初二作文
- 初三作文
- 文艺体育
- 乐谱
- 赏析
- 学习资料
- 语录