数据结构课程设计内部排序算法比较C语言Word文件下载.docx
- 文档编号:16171453
- 上传时间:2022-11-21
- 格式:DOCX
- 页数:13
- 大小:51.15KB
数据结构课程设计内部排序算法比较C语言Word文件下载.docx
《数据结构课程设计内部排序算法比较C语言Word文件下载.docx》由会员分享,可在线阅读,更多相关《数据结构课程设计内部排序算法比较C语言Word文件下载.docx(13页珍藏版)》请在冰豆网上搜索。
(II)方便快捷的操作:
用户只需要根据不同的需要在界面上输入系统提醒的操作形式直接进行相应的操作方式即可!
如图(3.2所示)
(用户在此输入操作方式)
(3.2)
(III)系统采用定义结构体数组来存储数据。
(IV)功能介绍:
(1)操作功能:
a.当用户选择随即电脑随机取数时
系统将弹出——>
请输入你要输入的个数:
(用户在此输入要电脑取数的个数)要是用户输入的数据过大系统将提醒错误——>
超出范围重新输入
b..当用户选择自行输入时
系统将弹出——>
请输入你要输入的个数(不大于于30的整数):
当用户输完元素的个数之后系统将提示用户依次输入各个元素。
——>
请输入各个元素:
(2)排序功能:
系统有简单选择排序,冒泡排序,堆排序,二路归并排序,快速排序的功能。
(3)打印清晰:
系统会打印出在排序操作之前电脑随机取数或者用户输入的原始排列顺序;
并将排序操作之后的有序数据打印在原始数据的下面以便用户的对比。
在排序操作结束之后系统将以直方图的形式打出排序过程中比较和移动次数让客户一目了然地看到排序的结果:
比较结果
排序方式
比较次数
移动次数
直接
简单选择
冒泡
堆排序
快速
第四章系统实现
(一)定义结构体数组:
typedefstruct
{intkey;
}datatype;
datatypeR[MAXNUM];
//定义结构体数组
(二)直接排序:
voidD_InsertSort(datatypeR[],intn)//直接排序
{
inti,j;
for(i=2;
i<
=n;
i++)
{cn[0]++;
if(R[i].key<
R[i-1].key)
{R[0]=R[i];
mn[0]++;
for(j=i-1;
R[0].key<
R[j].key;
j--)
R[j+1]=R[j];
R[j+1]=R[0];
mn[0]+=2;
}
}
(三)简单选择排序:
voidSelect_Sort(datatypeR[],intn)//简单选择排序
{
inti,j,k;
for(i=1;
i<
n;
i++)
{k=i;
for(j=i+1;
j<
j++)
{
cn[1]++;
if(R[j].key<
R[k].key)
k=j;
}
if(i=k)
{R[0]=R[k];
R[k]=R[i];
R[i]=R[0];
mn[1]+=3;
(四)冒泡排序:
voidBubble_Sort(datatypeR[],intn)//冒泡排序
inti,j;
intswap;
n-1;
{swap=0;
for(j=1;
=n-i;
cn[2]++;
if(R[j].key<
R[j+1].key)
{R[0]=R[j];
R[j]=R[j+1];
mn[2]+=3;
swap=1;
}}
if(swap==0)break;
(五)堆排序:
voidHeapAdjust(datatypeR[],ints,intt)
datatyperc;
inti,j;
rc=R[s];
i=s;
for(j=2*i;
=t;
j=2*j)
{cn[3]++;
if(j<
t&
&
R[j].key<
R[j+1].key)j=j+1;
if(rc.key>
R[j].key)break;
R[i]=R[j];
mn[3]++;
i=j;
R[i]=rc;
voidHeapSort(datatypeR[],intn)//堆排序
inti;
for(i=n/2;
i>
0;
i--)
HeapAdjust(R,i,n);
for(i=n;
1;
i--)
{R[0]=R[1];
R[1]=R[i];
mn[3]+=3;
HeapAdjust(R,1,i-1);
(六)归并排序:
voidMerge(datatypeR[],datatypeR1[],ints,intm,intt)
j=m+1;
k=s;
while(i<
=m&
j<
=t)
cn[4]++;
if(R[i].key<
R[j].key)
{R1[k++]=R[i++];
mn[4]++;
else
{R1[k++]=R[j++];
=m){R1[k++]=R[i++];
while(j<
=t){R1[k++]=R[j++];
voidMSort(datatypeR[],datatypeR1[],ints,intt)
intm;
if(s==t){R1[s]=R[s];
else{m=(s+t)/2;
MSort(R,R1,s,m);
MSort(R,R1,m+1,t);
Merge(R1,R,s,m,t);
voidMergeSort(datatypeR[],datatypeR1[],intn)//归并排序
MSort(R,R1,1,n);
intPartition(datatypeR[],intlow,inthigh)
R[0]=R[low];
mn[5]++;
while(low<
high)
{while(low<
high&
R[high].key>
=R[0].key){cn[5]++;
high--;
if(low<
high){R[low]=R[high];
low++;
R[low].key<
R[0].key){mn[5]++;
high){R[high]=R[low];
R[low]=R[0];
returnlow;
(七)快速排序:
voidQuick_Sort(datatypeR[],ints,intt)//快速排序
if(s<
t)
i=Partition(R,s,t);
Quick_Sort(R,s,i-1);
Quick_Sort(R,i+1,t);
voidprin(datatypeR[],intn)
inti;
printf("
排序的结果为:
"
);
%d"
R[i]);
\n"
}
(八)电脑随机取数:
voidsui_ji()
inti,n;
datatypeR[MAXNUM]={0};
a:
请输入你要输入的个数:
scanf("
%d"
&
n);
if(n>
25)
超出范围重新输入\n"
gotoa;
addlist(R,n);
排序前元素顺序为:
n+1;
i++)printf("
R[i].key);
\n"
D_InsertSort(R,n);
//直接排序
prin(R,n);
Select_Sort(R,n);
//简单选择排序
Bubble_Sort(R,n);
//冒泡排序
HeapSort(R,n);
//堆排序
datatypeR1[MAXNUM]={0};
MergeSort(R,R1,n);
//二路归并排序
Quick_Sort(R,0,n);
//快速排序
(九)用户自行输入:
voidzixing_input()
{intn,i;
请输入你要输入的个数(不大于于30的整数):
R1[i].key);
R1[i].key);
D_InsertSort(R1,n);
prin(R1,n);
Select_Sort(R1,n);
Bubble_Sort(R1,n);
HeapSort(R1,n);
datatypeR2[MAXNUM]={0};
MergeSort(R1,R2,n);
Quick_Sort(R1,0,n);
(十)主函数调用:
intmain(void)
ints;
|******************************|\n"
|-------欢迎使用-----------------|\n"
|-----
(1)随机取数-------------|\n"
|-----
(2)自行输入-------------|\n"
|-----(0)退出使用-------------|\n"
"
s);
switch(s)
case1:
system("
cls"
);
sui_ji();
break;
case2:
zixing_input();
case0:
谢谢使用!
exit(0);
printf("
比较结果\n"
\n"
排序方式比较次数移动次数\n"
直接%d%d\n"
cn[0],mn[0]);
简单选择%d%d\n"
cn[1],mn[1]);
冒泡%d%d\n"
cn[2],mn[2]);
堆排序%d%d\n"
cn[3],mn[3]);
二路归并%d%d\n"
cn[4],mn[4]);
快速%d%d\n"
cn[5],mn[5]);
第五章系统测试
(一)随机取数的测试:
(二)自行输入的测试:
(三)退出系统:
(四)时间的估算:
排序方法
平均时间性能
最好时间性能
最坏时间性能
O(n2)
O(n)
O(nlog2n)
参考文献
1.作者:
张晓莉王苗《数据结构与算法》机械工业出版社2008年7月
2.作者:
杨升《数据结构》厦门大学出版社2009年6月
教师评语和成绩
2010年6月
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 数据结构 课程设计 内部 排序 算法 比较 语言