数据结构课程设计报告排序算法比较Word下载.docx

上传人:b****6 文档编号:18609144 上传时间:2022-12-29 格式:DOCX 页数:14 大小:37.97KB
下载 相关 举报
数据结构课程设计报告排序算法比较Word下载.docx_第1页
第1页 / 共14页
数据结构课程设计报告排序算法比较Word下载.docx_第2页
第2页 / 共14页
数据结构课程设计报告排序算法比较Word下载.docx_第3页
第3页 / 共14页
数据结构课程设计报告排序算法比较Word下载.docx_第4页
第4页 / 共14页
数据结构课程设计报告排序算法比较Word下载.docx_第5页
第5页 / 共14页
点击查看更多>>
下载资源
资源描述

数据结构课程设计报告排序算法比较Word下载.docx

《数据结构课程设计报告排序算法比较Word下载.docx》由会员分享,可在线阅读,更多相关《数据结构课程设计报告排序算法比较Word下载.docx(14页珍藏版)》请在冰豆网上搜索。

数据结构课程设计报告排序算法比较Word下载.docx

4.具有良好的运行界面

5.算法具有良好的健壮性

6.按要求撰写课程设计报告和设计总结。

参考文献

1.《数据结构(C语言版)》,严蔚敏、吴伟民,清华大学出版社,1997.

2.《VisualC++实用教程(第一版)》,张荣梅、梁晓林,冶金工业出版社,2004.

审查意见

指导教师签字:

教研室主任签字:

年月日

1需求分析

对一组无序数运用各种算法进行排序,并返回排序移动次数和运行时间

2概要设计

main

生成无序数组

进行冒泡排序

进行希尔排序

进行选择排序

进行快速排序

进行归并排序

输出移动次数和时间

3运行环境(软、硬件环境)

1)硬件:

PC机

2)操作系统:

Windows2000/XP/2003

3)编译环境:

VisualC++6.0

4开发工具和编程语言

开发工具:

VISCALLc++6.0;

编程语言:

C语言。

5详细设计

1.声明数据类型

2.编写addlist函数生成随机无序数组

3.编写qipao函数实现冒泡排序,并输出排序移动次数和时间

4.编写insertSort函数实现插入排序,并输出排序移动次数和时间

5.编写SelectSort函数实现选择排序,并输出排序移动次数和时间

6.编写xierSort函数实现希尔排序,并输出排序移动次数和时间

7.编写MergeSort函数实现归并排序,并输出排序移动次数和时间

8.编写Main函数对子函数进行调用

6调试分析

在调试过程中出现的一些问题:

1、输入语句中没有加取地址符号&

2、误把取地址运算符&

当作逻辑与&

&

3、误把赋值=当恒等==

4、条件语句(if)后误加分号

5、循环语句中改变了循环变量

6、作为输出结果的变量没有赋初值

7.中英文输入切换导致符号错误

7测试结果

8参考文献

[1]谭浩强,C程序设计题解与上机指导(第3版),清华大学出版社,2005.7.

[2][美]HarveyM.Deitel,PaulJ.Deitel著,聂雪军,贺军译,C程序设计经典教程(第4版),清华大学出版社,2006。

3

[3]《数据结构(C语言版)》,严蔚敏、吴伟民,清华大学出版社,1997.

课程设计总结

通过本次课程设计,我学到了很多:

增强了查阅相关参考资料的能力;

独立分析解决问题的能力;

创新精神;

自己的上机动手的能力;

自己对课程设计的理解,得到很多启示,知道了以后要加强哪一方面,还有哪一方面有用,课程设计为我们提供了一个即动手又动脑、独立实践的机会,将课本上的知识理论和实际有机的结合起来,锻炼了我们的分析解决实际问题的能力。

提高离我们适应实际,实践编程的能力。

附录;

#include<

stdio.h>

stdlib.h>

string.h>

time.h>

#defineLIST_INIT_SIZE50000

intbj1,yd1,n;

clock_tstart_t,end_t;

typedefstruct

{intkey;

}ElemType;

{ElemType*elem;

intlength;

}SqList;

voidaddlist(SqList&

L)

{inti;

a:

printf("

请输入你要输入的个数:

"

);

scanf("

%d"

&

n);

if(n>

50000)

{printf("

超出范围重新输入!

!

\n"

gotoa;

}

L.elem=(ElemType*)malloc(LIST_INIT_SIZE*sizeof(ElemType));

if(!

L.elem)exit(0);

L.length=0;

for(i=1;

i<

n+1;

i++)

{b:

L.elem[i].key=rand();

if(L.elem[i].key>

30000)gotob;

++L.length;

//选择

voidSelectSort(SqList&

{start_t=clock();

inti,j,k,bj=0,yd=0;

L.length;

{k=i;

for(j=i+1;

j<

j++)

{bj++;

if(L.elem[j].key<

L.elem[k].key)k=j;

if(i!

=k)

{L.elem[0].key=L.elem[i].key;

L.elem[i].key=L.elem[k].key;

L.elem[k].key=L.elem[0].key;

yd+=3;

end_t=clock();

比较次数为%d移动次数为%d\n"

bj,yd);

排序用时为%f\n"

float(end_t-start_t)/CLK_TCK);

}

//起泡

voidqipao(SqList&

inti=1,j,bj=0,yd=0;

while(i<

L.length)

{for(j=1;

if(L.elem[j].key>

L.elem[j+1].key)

{L.elem[0].key=L.elem[j].key;

L.elem[j].key=L.elem[j+1].key;

L.elem[j+1].key=L.elem[0].key;

i++;

//直接插入

voidInsertSort(SqList&

inti,j,yd=0,bj=0;

for(i=2;

=L.length;

{

if(L.elem[i].key<

L.elem[i-1].key)

L.elem[0].key=L.elem[i].key;

yd++;

j=i-1;

bj++;

while(L.elem[0].key<

L.elem[j].key)

L.elem[j+1].key=L.elem[j].key;

j--;

//希尔

voidxier(SqList&

{

start_t=clock();

inti,d=L.length/2,j,w=0,k,yd=0,bj=0;

while(w<

d)

w=1;

for(i=w;

i=i+d)

k=i;

for(j=i+d;

j=j+d)

k=j;

w++;

d=d/2;

voidBeforeSort()

yd1=0,bj1=0;

voiddisplay(intm,intn)

m,n);

intPartition(SqList&

L,intlow,inthigh)//快速排序

intpivotkey;

L.elem[0]=L.elem[low];

yd1++;

pivotkey=L.elem[low].key;

while(low<

high)

while(low<

high&

L.elem[high].key>

=pivotkey)

--high;

L.elem[low]=L.elem[high];

bj1++;

L.elem[low].key<

++low;

L.elem[high]=L.elem[low];

L.elem[low]=L.elem[0];

returnlow;

voidQSort(SqList&

L,intlow,inthigh)

intpivotloc;

if(low<

pivotloc=Partition(L,low,high);

QSort(L,low,pivotloc-1);

QSort(L,pivotloc+1,high);

voidQuickSort(SqList&

BeforeSort();

QSort(L,1,L.length);

display(yd1,bj1);

voidMerge(ElemTypeR[],ElemTypeR1[],intlow,intm,inthigh)//归并

inti=low,j=m+1,k=low;

=m&

=high)

if(R[i].key<

=R[j].key)

R1[k]=R[i];

k++;

else

R1[k]=R[j];

j++;

=m)

while(j<

voidMergePass(ElemTypeR[],ElemTypeR1[],intlength,intn)

{inti=0,j;

while(i+2*length-1<

n)

{Merge(R,R1,i,i+length-1,i+2*length-1);

i=i+2*length;

if(i+length-1<

n-1)

Merge(R,R1,i,i+length-1,n-1);

for(j=i;

n;

R1[j]=R[j];

voidMSort(ElemTypeR[],ElemTypeR1[],intn)

{intlength=1;

while(length<

MergePass(R,R1,length,n);

length=2*length;

MergePass(R1,R,length,n);

voidMergeSort(SqList&

MSort(L.elem,L.elem,L.length);

intmain()

{SqListL;

addlist(L);

printf("

起泡排序:

\n"

qipao(L);

直插排序:

InsertSort(L);

选择排序:

SelectSort(L);

希尔排序:

xier(L);

快速排续:

QuickSort(L);

归并排序:

MergeSort(L);

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

当前位置:首页 > 幼儿教育 > 育儿知识

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

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