数据结构实验报告同名7971.docx

上传人:b****5 文档编号:30281238 上传时间:2023-08-13 格式:DOCX 页数:12 大小:94.42KB
下载 相关 举报
数据结构实验报告同名7971.docx_第1页
第1页 / 共12页
数据结构实验报告同名7971.docx_第2页
第2页 / 共12页
数据结构实验报告同名7971.docx_第3页
第3页 / 共12页
数据结构实验报告同名7971.docx_第4页
第4页 / 共12页
数据结构实验报告同名7971.docx_第5页
第5页 / 共12页
点击查看更多>>
下载资源
资源描述

数据结构实验报告同名7971.docx

《数据结构实验报告同名7971.docx》由会员分享,可在线阅读,更多相关《数据结构实验报告同名7971.docx(12页珍藏版)》请在冰豆网上搜索。

数据结构实验报告同名7971.docx

数据结构实验报告同名7971

数据结构实验报告(同名7971)

南京信息工程大学数据结构实验(实习)报告

实验(实习)名称内排序实验(实习)日期2012.5.30得分指导老师宣文霞

系计算机系专业网络工程班级1姓名袁盼学号20102300242

1、需求分析

(1)实现直接插入排序算法

编写一个程序实现直接插入排序过程,并输出{9,8,7,6,5,4,3,2,1,0}的排序过程。

输出形式例如:

初始关键字9876543210

排序次数i=18976543210

i=27896543210

……

最后结果:

0123456789

(2)——实现希尔插入排序算法

编写一个程序实现希尔插入排序过程,并输出{9,8,7,6,5,4,3,2,1,0}的排序过程。

(3)实现冒泡排序算法

编写一个程序实现冒泡排序过程,并输出{9,8,7,6,5,4,3,2,1,0}的排序过程。

(4)实现快速排序算法

编写一个程序实现快速排序过程,并输出{6,8,7,9,0,1,3,2,4,5}的排序过程。

(5)实现直接选择排序算法

编写一个程序实现直接排序过程,并输出{6,8,7,9,0,1,3,2,4,5}的排序过程。

2.设计

一、直接插入排序

#include

#defineMAXE20

typedefintKeyType;

typedefcharInfoType[10];

typedefstruct/*记录类型*/

{

KeyTypekey;/*关键字项*/

InfoTypedata;/*其他数据项,类型为InfoType*/

}RecType;

voidInsertSort(RecTypeR[],intn)/*对R[0..n-1]按递增有序进行直接插入排序*/

{

inti,j,k;

RecTypetemp;

for(i=1;i

{

temp=R[i];

j=i-1;/*从右向左在有序区R[0..i-1]中找R[i]的插入位置*/

while(j>=0&&temp.key

{

R[j+1]=R[j];/*将关键字大于R[i].key的记录后移*/

j--;

}

R[j+1]=temp;/*在j+1处插入R[i]*/

printf("i=%d",i);/*输出每一趟的排序结果*/

for(k=0;k

printf("%3d",R[k].key);

printf("\n");

}

}

voidmain()

{

inti,k,n=10;

KeyTypea[]={9,8,7,6,5,4,3,2,1,0};

RecTypeR[MAXE];

for(i=0;i

R[i].key=a[i];

printf("\n");

printf("初始关键字");/*输出初始关键字序列*/

for(k=0;k

printf("%3d",R[k].key);

printf("\n");

InsertSort(R,n);

printf("最后结果");/*输出初始关键字序列*/

for(k=0;k

printf("%3d",R[k].key);

printf("\n\n");

}

 

二、希尔排序

#include

#defineMAXE20/*线性表中最多元素个数*/

typedefintKeyType;

typedefcharInfoType[10];

typedefstruct/*记录类型*/

{

KeyTypekey;/*关键字项*/

InfoTypedata;/*其他数据项,类型为InfoType*/

}RecType;

voidShellSort(RecTypeR[],intn)/*希尔排序算法*/

{

inti,j,d,k;

RecTypetemp;

d=n/2;/*d取初值n/2*/

while(d>0)

{

for(i=d;i

{

j=i-d;

while(j>=0&&R[j].key>R[j+d].key)

{

temp=R[j];/*R[j]与R[j+d]交换*/

R[j]=R[j+d];

R[j+d]=temp;

j=j-d;

}

}

printf("d=%d:

",d);/*输出每一趟的排序结果*/

for(k=0;k

printf("%3d",R[k].key);

printf("\n");

d=d/2;/*递减增量d*/

}

}

voidmain()

{

inti,k,n=10;

KeyTypea[]={9,8,7,6,5,4,3,2,1,0};

RecTypeR[MAXE];

for(i=0;i

R[i].key=a[i];

printf("\n");

printf("初始关键字");/*输出初始关键字序列*/

for(k=0;k

printf("%3d",R[k].key);

printf("\n");

ShellSort(R,n);

printf("最后结果");/*输出初始关键字序列*/

for(k=0;k

printf("%3d",R[k].key);

printf("\n\n");

}

三、冒泡排序

#include

#defineMAXE20/*线性表中最多元素个数*/

typedefintKeyType;

typedefcharInfoType[10];

typedefstruct/*记录类型*/

{

KeyTypekey;/*关键字项*/

InfoTypedata;/*其他数据项,类型为InfoType*/

}RecType;

voidBubbleSort(RecTypeR[],intn)/*冒泡排序算法*/

{

inti,j,k;

RecTypetemp;

for(i=0;i

{

for(j=n-1;j>i;j--)/*比较,找出本趟最小关键字的记录*/

if(R[j].key

{

temp=R[j];/*R[j]与R[j-1]进行交换,将最小关键字记录前移*/

R[j]=R[j-1];

R[j-1]=temp;

}

printf("i=%d",i);/*输出每一趟的排序结果*/

for(k=0;k

printf("%2d",R[k].key);

printf("\n");

}

}

voidmain()

{

inti,k,n=10;

KeyTypea[]={9,8,7,6,5,4,3,2,1,0};

RecTypeR[MAXE];

for(i=0;i

R[i].key=a[i];

printf("\n");

printf("初始关键字");/*输出初始关键字序列*/

for(k=0;k

printf("%2d",R[k].key);

printf("\n");

BubbleSort(R,n);

printf("最后结果");/*输出初始关键字序列*/

for(k=0;k

printf("%2d",R[k].key);

printf("\n\n");

}

四、实现快速排序法

#include

printf("\n");

}

}

voidmain()

{

inti,k,n=10,m=5;

KeyTypea[]={6,8,7,9,0,1,3,2,4,5};

RecTypeR[MAXE];

for(i=0;i

R[i].key=a[i];

printf("\n");

printf("初始关键字");/*输出初始关键字序列*/

for(k=0;k

printf("%2d",R[k].key);

printf("\n");

SelectSort(R,n);

printf("最后结果");/*输出初始关键字序列*/

for(k=0;k

printf("%2d",R[k].key);

printf("\n\n");

}

3、调试分析

实验过程中遇到不少类似变量没有定义和全角,半角的问题,经过C++程序编译指向错误,最终得到解决,通过本次实验,我学到了另外一种处理数据的方法。

4、测试结果

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 人文社科 > 广告传媒

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1