实验一
#include<stdio.h>
#include<stdlib.h>
#define N 10
void shellpass(int a[], int n, int d)
{
int i,j,temp;
for(i=d;i<n;i++)
{
if(a[i]<a[i-d])
{
temp=a[i];
for(j=i-d;j>=0&&temp<a[j];j-=d)
a[j+d]=a[j];
a[j+d]=temp;
}
}
}
void shellsort(int a[], int n, int delta[], int t)
{
int i, j;
for(i=0; i<t; i++)
{
shellpass(a, n, delta[i]);
printf("第%d趟希尔排序,增量为%d,排序之后的结果\n",i+1,delta[i]);
for(j=0; j<n; j++)
{
printf("%d\t",a[j]);
}
printf("\n");
}
}
void main()
{
int n=N, a[N];
int b[3] = {5,3,1};
int i;
printf("输入%d个数\n", n);
for(i=0;i<n;i++)
{
printf("第%d个数:\t",i+1);
scanf("%d",&a[i]);
}
shellsort(a, n, b, 3);
printf("最终希尔排序之后的结果\n");
for(i=0;i<n;i++)
{
printf("%d\t",a[i]);
}
printf("\n");
}
![](https://video.ask-data.xyz/img.php?b=https://iknow-pic.cdn.bcebos.com/54fbb2fb43166d2216c5fcd8452309f79152d2c8?x-bce-process=image%2Fresize%2Cm_lfit%2Cw_600%2Ch_800%2Climit_1%2Fquality%2Cq_85%2Fformat%2Cf_auto)
实验二
#include<stdio.h>
#include<stdlib.h>
#define N 10
void shellpass(int a[], int n, int d)
{
int i,j,temp;
for(i=d;i<n;i++)
{
if(a[i]<a[i-d])
{
temp=a[i];
for(j=i-d;j>=0&&temp<a[j];j-=d)
a[j+d]=a[j];
a[j+d]=temp;
}
}
}
void shellsort(int a[], int n, int delta[], int t)
{
int i, j;
for(i=0; i<t; i++)
{
shellpass(a, n, delta[i]);
//printf("第%d趟希尔排序,增量为%d,排序之后的结果\n",i+1,delta[i]);
//for(j=0; j<n; j++)
//{
// printf("%d\t",a[j]);
//}
//printf("\n");
}
}
int bisearch(int a[], int l, int r, int i)
{
int m = (l+r)/2;
if (l==r)
return -1;
if (a[m]==i)
return m;
else if(a[m]>i)
return bisearch(a, l, m, i);
else
return bisearch(a, m+1, r, i);
}
void main()
{
int n=N, a[N];
int b[3] = {5,3,1};
int i, j;
printf("输入%d个数\n", n);
for(i=0;i<n;i++)
{
printf("第%d个数:\t",i+1);
scanf("%d",&a[i]);
}
shellsort(a, n, b, 3);
printf("排序之后的结果\n");
for(i=0;i<n;i++)
{
printf("%d\t",a[i]);
}
printf("\n");
do
{
printf("\n请输入需要查询的数字,结束请输入#\n");
if (scanf("%d",&i))
{
j = bisearch(a, 0, n, i);
if (j==-1)
printf("没有找到关键字%d\n", i);
else
printf("关键字%d是排序后数组的第%d个数字\n", i,j+1);
}
else
break;
}while(true);
}
![](https://video.ask-data.xyz/img.php?b=https://iknow-pic.cdn.bcebos.com/9825bc315c6034a8e5e753cdc813495409237671?x-bce-process=image%2Fresize%2Cm_lfit%2Cw_600%2Ch_800%2Climit_1%2Fquality%2Cq_85%2Fformat%2Cf_auto)