数据结构最短路径Word文件下载.docx
《数据结构最短路径Word文件下载.docx》由会员分享,可在线阅读,更多相关《数据结构最短路径Word文件下载.docx(20页珍藏版)》请在冰豆网上搜索。
y'
;
while(ch1=='
||ch1=='
Y'
)
{
printf("
**********菜单**********\n"
);
请选择下列操作:
\n"
1-------更新待排序数据--------\n"
2-------直接插入排序----------\n"
3-------冒泡排序--------------\n"
4-------直接选择排序----------\n"
5-------退出------------------\n"
请选择操作类别:
scanf("
\n%c"
&
ch2);
switch(ch2)
{
case'
1'
:
printf("
请输入更新待排序数据:
for(i=1;
i<
=N;
i++)
scanf("
%d"
S[i].key);
break;
2'
请输入要输出第几趟排序结果:
scanf("
m);
R[i].key=S[i].key;
Insertsort();
3'
Bubblesort();
4'
Selectsort();
5'
ch1='
n'
default:
}
}
}
voidInsertsort()
inti,j,k;
for(i=2;
if(R[i].key<
R[i-1].key)
R[0]=R[i];
j=i-1;
while(R[0].key<
R[j].key)
{/*从右向左在有序区R[1....i-1]中查找R[i]的插入位置*/
R[j+1]=R[j];
j--;
}
R[j+1]=R[0];
if(i-1==m)
第%d趟的结果是:
m);
for(k=1;
k<
k++)
printf("
%5d"
R[k].key);
请输入还想输出第几趟结果,不想输出时请输入0:
if(m!
=0)
最终排序结果是:
for(k=1;
voidBubblesort()
ey<
{
R[0]=R[j+1];
R[j]=R[0];
exchange=TRUE;
if(i==m)
if((!
exchange)||(m==0))
voidSelectsort()
inti,j,k,h;
for(i=1;
N;
h=i;
for(j=i+1;
j<
j++)
if(R[j].key<
R[h].key)
h=j;
if(h!
=i)
R[i]=R[h];
R[h]=R[0];
二、
#defineN4
#definefalse0
#defineture1
typedefintkeytype;
typedefcharinfotype;
keytypekey;
infotypeotherinfo;
}rectype;
typedefrectypeseqlist[N+1];
seqlistR;
voidquicksort(seqlist&
R,ints,intt)
inti=s,j=t;
if(i<
j)
R[0]=R[i];
do
while(i<
j&
&
R[j].key>
=R[0].key)
j--;
if(i<
R[i]=R[j];
i++;
R[i].key<
R[j]=R[i];
}while(i<
j);
R[i]=R[0];
quicksort(R,s,j-1);
quicksort(R,j+1,t);
voidshellsort(seqlist&
R,intn)
inti,j,gap;
gap=n/2;
while(gap>
0)
for(i=gap;
=n;
R[0]=R[i];
j=i-gap;
while(j>
=1&
R[0].key<
{
R[j+gap]=R[j];
j=j-gap;
}
R[j+gap]=R[0];
j=j-gap;
gap=gap/2;
voidsift(seqlist&
R,intv,intn)
inti,j;
i=v;
j=2*i;
while(j<
=n)
if(j<
n&
R[j].key<
R[j+1].key)
j++;
if(R[0].key<
R[i]=R[j];
i=j;
j=2*i;
else
j=n+1;
R[i]=R[0];
voidheapsort(seqlist&
inti;
for(i=n/2;
i>
=1;
i--)
sift(R,i,n);
for(i=n;
=2;
R[i]=R[1];
R[1]=R[0];
sift(R,1,i-1);
voidshow(seqlist&
for(i=1;
R[i].key);
voidmain()
seqlistS;
inti;
charch1,ch2;
printf("
请输入4个待排元素:
(每两个数据间用空格隔开)\n"
***************菜单****************\n"
请选择下列操作:
----更新待排数据----------------------\n"
2----------------快速排序----------------------\n"
3-----------------希尔排序---------------------\n"
4-----------------堆排序----------------\n"
5--------------------退出----------------------------\n"
请选择操作类型:
case'
请输出更新待排数据:
quicksort(S,1,4);
show(S,4);
shellsort(S,4);
heapsort(S,4);
三、#include<
string>
iostream>
usingnamespacestd;
#defineN6
typedefstringinfotype;
keytypepaim;
inti,j,m;
for(i=6;
R[i].paim=7-i;
if(R[i].key==R[i+1].key)
R[i].paim=R[i+1].paim;
cout<
<
"
姓名为:
"
R[i].otherinfo;
成绩为:
R[i].key;
名次为:
R[i].paim<
endl;
请输入6个成绩:
请输入6个学生姓名:
cin>
S[i].otherinfo;
----更新成绩----------------------\n"
请输出更新的成绩:
quicksort(S,1,N);
show(S,N);
shellsort(S,N);
heapsort(S,N);
5.上机体会
纯手打,排序还不是小kiss。
。
考试复习的时间都用来编程了,伤不起。
不过还是学到了不少的东西。
加油。
教师评价
优
良
中
及格
不及格
教师签名
日期