希尔排序问题
来源:互联网 发布:建立数据库的表结构 编辑:程序博客网 时间:2024/06/06 18:27
希尔排序是在直接插入排序的基础上进行的,先进行分组有序然后逐渐减小组成员间的位序差值,当为序差为一时即和直接插入排序完全相同。
程序执行结果截图如下:
截图一:
截图二:
程序的源代码如下:
#include<stdio.h>
typedefstruct{
int *p;
int length;
}sqlist;
void initshellarr(sqlist &L,int arr[])
{
intelemnumber=0;
printf("请输入数组中的第一个元素,输入110结束\n");
int elem;
scanf("%d",&elem);
int i;
for(i=1;elem!=110;i++)
{
arr[i]=elem;
printf("请输入数组中的下一个元素,输入110结束\n");
scanf("%d",&elem);
}
L.p=arr;
L.length=i-1;
}
bool lt(int i,int j)
{
if(i<j)
return true;
else
return false;
}
void shellinsert(sqlist &L,int arr[],int dk)
{
for(int i=dk+1;i<=L.length;i++)// xun huan ge zu
{
for(int ij=i;ij<=L.length ;ij+=dk)//dui其中一组进行排序
{
if(lt(L.p[ij],L.p[ij-dk]))
{
L.p[0]=L.p[ij];
//L.p[ij]=L.p[ij-dk];
intj;
for(j=ij-dk;j>0&<(L.p[0],L.p[j]);j-=dk)
{
L.p[j+dk]=L.p[j];
}
L.p[j+dk]=L.p[0];
}
}
}
}
void shellsorting(sqlist &L,int arr[])
{
intdata[3]={5,3,1};
int t=3;
for(int k =0;k<t;k++)
{
shellinsert(L,arr,data[k]);
}
}
void showarr(sqlist &L)
{
for(int i=1;i<=L.length;i++)
{
printf("%d",L.p[i]);
printf("\t");
}
printf("\n");
}
void main()
{
sqlist L;
intshellarr[200];
initshellarr(L,shellarr);
printf("希尔排序之前\n");
showarr(L);
L.p=shellarr;
shellsorting(L,shellarr);
L.p=shellarr;
printf("希尔排序之后\n");
showarr(L);
}
- 希尔排序问题
- 希尔排序问题
- 排序问题-希尔排序
- shell sort 希尔排序问题
- 希尔排序
- 希尔排序
- 希尔排序
- 希尔排序
- 希尔排序
- 希尔排序
- 希尔排序
- 希尔排序
- 希尔排序
- 希尔排序
- 希尔排序
- 希尔排序
- 希尔排序
- 希尔排序
- WHY CQRS and EVENT SOURCING
- iphone ios 如何创建缩率图
- 程序员进阶之道—稳中求进
- android4.0.3下编译framework/base/policy
- Security vulnerability in MySQL/MariaDB sql/password.c
- 希尔排序问题
- js注入测试器
- centos 安装g++
- 黑马程序员_java基础知识学习总结一
- Console命令详解,让调试js代码变得更简单
- Objective-C中的@property和@synthesize用法
- java回调函数
- UIImageView和UIImage,CGContextRef 的一些知识点
- 通用堆栈c语言版本(可以适应任何类型)