博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
数据结构-希尔排序
阅读量:5150 次
发布时间:2019-06-13

本文共 957 字,大约阅读时间需要 3 分钟。

希尔排序的思想:

        先取一个小于n的整数d1作为第一个量,把文件的全部记录分成d1个组。所有距离为d1的倍数的记录放在同一个组中。先在各组内进行直接插入排序;然后,取第二个增量d2<d1重复上述的分组和排序,直至所取的增量dt=1(dt<dt-l<…<d2<d1),即所有记录放在同一组中进行直接插入排序为止。

代码:

 

#include<stdio.h>
int a[
100];
int n;
void Shellpass(
int a[], 
int d)
//
希尔排序的一趟排序,d为当前增量。 
{
 
int i,j;
 
for(i=d+
1;i<=n;i++)
 
if(a[i]<a[i-d])
 {
  a[
0]=a[i];
  j=i-d;
  
do{
    a[j+d]=a[j];
    j=j-d;
  }
while(j>
0&&a[
0]<a[j]);
  a[j+d]=a[
0];
 }
}
void ShellSort(
int a[])
{
 
int increment=n;
 
do{
  increment=increment/
3+
1;
  Shellpass(a,increment);
  
 }
while(increment>
1);
}
int main()
{
    
int i,j;
    printf(
"
Enter n:
");
    scanf(
"
%d
",&n);
    printf(
"
Enter %d integer:\n
",n);
    
for(i=
1;i<=n;i++)
    scanf(
"
%d
",&a[i]);
    ShellSort(a);
    printf(
"
After sorted:
");
    
for(i=
1;i<=n;i++)
    printf(
"
%4d
",a[i]);
    printf(
"
\n
");
    
    
return 
0
 }
 
/*
Enter n:10
Enter 10 integer:
48 15 78 92 -98 14 26 3 78 102
After sorted: -98   3  14  15  26  48  78  78  92 102
请按任意键继续. . .
*/

 

转载于:https://www.cnblogs.com/lanshy/archive/2013/03/24/2978246.html

你可能感兴趣的文章
Xcode5和ObjC新特性
查看>>
Centos 7.0 安装Mono 3.4 和 Jexus 5.6
查看>>
CSS属性值currentColor
查看>>
java可重入锁reentrantlock
查看>>
浅谈卷积神经网络及matlab实现
查看>>
解决ajax请求cors跨域问题
查看>>
《收获,不止Oracle》pdf
查看>>
Real-Time Rendering 笔记
查看>>
如何理解HTML结构的语义化
查看>>
Activity之间的跳转:
查看>>
实验四2
查看>>
多路复用
查看>>
Python数据可视化之Pygal(雷达图)
查看>>
Java学习笔记--字符串和文件IO
查看>>
转 Silverlight开发历程—(画刷与着色之线性渐变画刷)
查看>>
SQL语法(3)
查看>>
在js在添版本号
查看>>
sublime3
查看>>
Exception Type: IntegrityError 数据完整性错误
查看>>
Nuget:Newtonsoft.Json
查看>>