线性表插入类排序算法

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

软件基础基础实验报告

系别:地质工程系班级:09测绘学号:0910205006 姓名:严康文实验时间:实验地点:网教中心

实验环境:Turbo c++3.0(vc6.0)

实验名称:线性表的插入类排序算法

实验目的:

(1)掌握简单插入排序算法

(2)掌握希尔排序算法★

实验内容:

a)对无序序列P(1:n)进行插入排序。

备注:需要用到的算法是:insort( )

b)对无序序列P(1:n)进行希尔排序。

备注:需要用到的算法是:shlsort( )

程序代码:(请写上详细的程序注释!注意这是重要的评分依据!) #include"stdio.h"

#include"stdlib.h"

void input(int *v,int *n)

{

int i;

printf("请输入%d元素到线性表\n",*n);

for(i=0;i<*n;i++)

{scanf("%d",v+i);printf("\n请输入下一个元素到线性表\n");}

printf("输入完成,停止输入\n");

}

void output(int *v,int *n)

{int i;

for(i=0;i<*n;i++)

printf("线性表的第%d个元素为%d\n",i+1,*(v+i));

}

int *initsl(int m,int *n)

{

int *v;

v=(int *)malloc(m*sizeof(int));

return v;

}

void insl(int *v,int m,int *n,int i,int b)

{int j;

if(*n==m)

{printf("overflow\n");

return;

}

if(i>*n-1) i=*n+1;

if(i<1) i=1;

for(j=*n;j>=i;j--) v[j]=v[j-1];

v[i-1]=b;

*n=*n+1;

return;

}

void desl(int *v,int m,int *n,int i)

{int j;

if(*n==0)

{printf("underflow\n");

return;

if((i<1)||(i>*n))

printf("not this element is in\n");

return;

}

for(j=i;j<=*n-1;j++)

v[j-1]=v[j];

*n=*n-1;

return;

}

void menu()

{

printf("************请选择需要操作************\n"); printf("************进行插入请选择1************\n");

printf("************进行删除请选择2************\n");

printf("************查找请选择3************\n");

printf("************对分查找请选择4************\n");

printf("************冒泡排序请选择5************\n");

printf("************快速排序请选择6************\n");

printf("************插入排序请选择7************\n");

printf("************希尔排序请选择8************\n");

printf("************退出请选择9************\n");

return;

}

void bserch(int*v,int *n,int x)

{

int i,j,k;

i=1;j=*n;

while(i<=j)

{

k=(i+j)/2;

if(v[k-1]==x) break;

if(v[k-1]>x) j=k-1;

else i=k+1;

}

if(k!=-1) printf("被查找的元素序数是%d\n",k);else printf("not

founded\n");

}

void serch(int*v,int *n,int x)

{

int k=0;

while((k<*n)&&(v[k]!=x)) k=k+1;

if(k==*n) k=-1;

if(k!=-1) printf("被查找的元素序数是%d\n",k+1);else printf("not founded\n");

}

void insort(int *p,int *n)

{

int t;

int j,k;

for(j=1;j<*n;j++)

{

t=p[j];k=j-1;

while((k>=0)&&((p[k])>t))

{p[k+1]=p[k];k=k-1;}

p[k+1]=t;

}

return;

相关文档
最新文档