欢迎来到天天文库
浏览记录
ID:55706722
大小:47.00 KB
页数:4页
时间:2020-05-25
《数据结构C语言冒泡排序和直接插入排序实验报告.doc》由会员上传分享,免费在线阅读,更多相关内容在应用文档-天天文库。
1、一、实验目的1.掌握常用的排序方法,并用高级语言实现排序算法。2.理解排序的定义和各种排序的特点。3.了解排序过程及依据的原则,并了解各种排序方法的时间复杂度分析。二、实验任务1.设计一待排序的线性表以顺序存储结构存储,试写出冒泡排序和直接插入排序算法。三、程序流程图否否是是开始线性表指针p定义循环体i,ji=2i<=lastelem[0]2、p定义循环变量i,j定义交换变量x定义循环标志flagflag=0j=1i=1i3、循环符号flag置零。每趟从第一项起,执行n-i次。每趟将第i大的项移到第n-i+1位。附录程序清单//直接插入排序#defineMAXLEN100#includestructsqlisttp{intelem[MAXLEN];intlast;};sqlisttp*create(){inti;sqlisttpv;scanf("%d",&v.last);for(i=1;i<=v.last;i++)scanf("%d",&v.elem[i]);return&v;}voidprint(sqlisttp*p){i4、nti;for(i=1;i<=p->last;i++)printf("%d",p->elem[i]);printf("%d",p->last);}voidinsertsort(sqlisttp*p){inti,j;for(i=2;i<=p->last;i++){p->elem[0]=p->elem[i];for(j=i-1;p->elem[0]elem[j];j--)p->elem[j+1]=p->elem[j];p->elem[j+1]=p->elem[0];}}voidmain(){printf("直5、接插入排序");sqlisttpv=*create();insertsort(&v);print(&v);}//冒泡排序#defineMAXLEN100#includestructsqlisttp{intelem[MAXLEN];intlast;};sqlisttp*create(){inti;sqlisttpv;scanf("%d",&v.last);for(i=1;i<=v.last;i++)scanf("%d",&v.elem[i]);return&v;}voidprint(sqlisttp*6、p){inti;for(i=1;i<=p->last;i++)printf("%d",p->elem[i]);printf("%d",p->last);}voidbubblesort(sqlisttp*p){inti,j,x,flag;for(i=1;(ilast)&&flag;i++){flag=0;for(j=1;j<=p->last-i;j++)if(p->elem[j]>p->elem[j+1]){x=p->elem[j];p->elem[j]=p->elem[j+1];p->elem[j+1]=7、x;flag=1;}}}voidmain(){printf("冒泡排序");sqlisttpv=*create();bubblesort(&v);print(&v);}
2、p定义循环变量i,j定义交换变量x定义循环标志flagflag=0j=1i=1i3、循环符号flag置零。每趟从第一项起,执行n-i次。每趟将第i大的项移到第n-i+1位。附录程序清单//直接插入排序#defineMAXLEN100#includestructsqlisttp{intelem[MAXLEN];intlast;};sqlisttp*create(){inti;sqlisttpv;scanf("%d",&v.last);for(i=1;i<=v.last;i++)scanf("%d",&v.elem[i]);return&v;}voidprint(sqlisttp*p){i4、nti;for(i=1;i<=p->last;i++)printf("%d",p->elem[i]);printf("%d",p->last);}voidinsertsort(sqlisttp*p){inti,j;for(i=2;i<=p->last;i++){p->elem[0]=p->elem[i];for(j=i-1;p->elem[0]elem[j];j--)p->elem[j+1]=p->elem[j];p->elem[j+1]=p->elem[0];}}voidmain(){printf("直5、接插入排序");sqlisttpv=*create();insertsort(&v);print(&v);}//冒泡排序#defineMAXLEN100#includestructsqlisttp{intelem[MAXLEN];intlast;};sqlisttp*create(){inti;sqlisttpv;scanf("%d",&v.last);for(i=1;i<=v.last;i++)scanf("%d",&v.elem[i]);return&v;}voidprint(sqlisttp*6、p){inti;for(i=1;i<=p->last;i++)printf("%d",p->elem[i]);printf("%d",p->last);}voidbubblesort(sqlisttp*p){inti,j,x,flag;for(i=1;(ilast)&&flag;i++){flag=0;for(j=1;j<=p->last-i;j++)if(p->elem[j]>p->elem[j+1]){x=p->elem[j];p->elem[j]=p->elem[j+1];p->elem[j+1]=7、x;flag=1;}}}voidmain(){printf("冒泡排序");sqlisttpv=*create();bubblesort(&v);print(&v);}
3、循环符号flag置零。每趟从第一项起,执行n-i次。每趟将第i大的项移到第n-i+1位。附录程序清单//直接插入排序#defineMAXLEN100#includestructsqlisttp{intelem[MAXLEN];intlast;};sqlisttp*create(){inti;sqlisttpv;scanf("%d",&v.last);for(i=1;i<=v.last;i++)scanf("%d",&v.elem[i]);return&v;}voidprint(sqlisttp*p){i
4、nti;for(i=1;i<=p->last;i++)printf("%d",p->elem[i]);printf("%d",p->last);}voidinsertsort(sqlisttp*p){inti,j;for(i=2;i<=p->last;i++){p->elem[0]=p->elem[i];for(j=i-1;p->elem[0]elem[j];j--)p->elem[j+1]=p->elem[j];p->elem[j+1]=p->elem[0];}}voidmain(){printf("直
5、接插入排序");sqlisttpv=*create();insertsort(&v);print(&v);}//冒泡排序#defineMAXLEN100#includestructsqlisttp{intelem[MAXLEN];intlast;};sqlisttp*create(){inti;sqlisttpv;scanf("%d",&v.last);for(i=1;i<=v.last;i++)scanf("%d",&v.elem[i]);return&v;}voidprint(sqlisttp*
6、p){inti;for(i=1;i<=p->last;i++)printf("%d",p->elem[i]);printf("%d",p->last);}voidbubblesort(sqlisttp*p){inti,j,x,flag;for(i=1;(ilast)&&flag;i++){flag=0;for(j=1;j<=p->last-i;j++)if(p->elem[j]>p->elem[j+1]){x=p->elem[j];p->elem[j]=p->elem[j+1];p->elem[j+1]=
7、x;flag=1;}}}voidmain(){printf("冒泡排序");sqlisttpv=*create();bubblesort(&v);print(&v);}
此文档下载收益归作者所有