数据结构最短路径Word文件下载.docx

上传人:b****5 文档编号:20452947 上传时间:2023-01-23 格式:DOCX 页数:20 大小:95.12KB
下载 相关 举报
数据结构最短路径Word文件下载.docx_第1页
第1页 / 共20页
数据结构最短路径Word文件下载.docx_第2页
第2页 / 共20页
数据结构最短路径Word文件下载.docx_第3页
第3页 / 共20页
数据结构最短路径Word文件下载.docx_第4页
第4页 / 共20页
数据结构最短路径Word文件下载.docx_第5页
第5页 / 共20页
点击查看更多>>
下载资源
资源描述

数据结构最短路径Word文件下载.docx

《数据结构最短路径Word文件下载.docx》由会员分享,可在线阅读,更多相关《数据结构最短路径Word文件下载.docx(20页珍藏版)》请在冰豆网上搜索。

数据结构最短路径Word文件下载.docx

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。

考试复习的时间都用来编程了,伤不起。

不过还是学到了不少的东西。

加油。

 

教师评价

及格

不及格

教师签名

日期

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

当前位置:首页 > 人文社科 > 法律资料

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

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