數(shù)據(jù)結(jié)構(gòu)-最短路徑_第1頁
數(shù)據(jù)結(jié)構(gòu)-最短路徑_第2頁
數(shù)據(jù)結(jié)構(gòu)-最短路徑_第3頁
數(shù)據(jù)結(jié)構(gòu)-最短路徑_第4頁
數(shù)據(jù)結(jié)構(gòu)-最短路徑_第5頁
已閱讀5頁,還剩10頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

江南大學(xué)物聯(lián)網(wǎng)工程學(xué)院上機(jī)報(bào)告

課程名稱數(shù)據(jù)結(jié)構(gòu)上機(jī)名稱排序上機(jī)日期2022-5-22

班級(jí)計(jì)科1203姓名汪俊學(xué)號(hào)1030412314

上機(jī)報(bào)告要求1.上機(jī)名稱2.上機(jī)要求3.上機(jī)環(huán)境4.程序清單(寫明運(yùn)行結(jié)果)5.上機(jī)體味

1.上機(jī)名稱

排序,實(shí)驗(yàn)5

2.上機(jī)要求

調(diào)試實(shí)驗(yàn)一,補(bǔ)充實(shí)驗(yàn)2主函數(shù),完成實(shí)驗(yàn)3

3.上機(jī)環(huán)境

VisualC++6.0

4.程序清單(寫明運(yùn)行結(jié)果)

、

#include<stdio.h>

#defineN10

#defineFALSE0

#defineTRUE1

typedefintKeyType;

typedefcharInfoType;

typedefstruct

(

KeyTypekey;

InfoTypeotherinfo;

JRecType;

typedefRecTypeSeqlist[N+1];

intm,num;〃全局變量m存儲(chǔ)輸出的是第幾趟結(jié)果,num存儲(chǔ)遞歸調(diào)用的次數(shù)

SeqlistR;

voidInsertsort();

voidBubblesort();

voidSelectsort();

voidmain()

(

SeqlistS;

inti;

charchl,ch2;

請(qǐng)輸入10個(gè)待排序的數(shù)據(jù):每?jī)蓚€(gè)數(shù)據(jù)間用空格隔開

for(i=l;i<=N;i++)

chl-y';

while(ch1=-y'||ch1='Y')

(

菜單

請(qǐng)選擇下列操作

更新待排序數(shù)據(jù)

直接插入排序

冒泡排序

直接選擇排序

退出

請(qǐng)選擇操作類別

switch(ch2)

{

caseT:

請(qǐng)輸入更新待排序數(shù)據(jù)

for(i=l;i<=N;i++)

break;

case2:

請(qǐng)輸入要輸出第幾趟排序結(jié)果

for(i=l;i<=N;i++)

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

Insertsort();

break;

case3:

請(qǐng)輸入要輸出第幾趟排序結(jié)果

for(i=l;i<=N;i++)

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

Bubblesort();

break;

case4:

請(qǐng)輸入要輸出第幾趟排序結(jié)果

for(i=l;i<=N;i++)

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

Selectsort();

break;

case5:

chl-n*;

break;

default:

chl-n1;

voidInsertsort()

(

inti,j,k;

for(i=2;i<=N;i++)

(

if(R[i].key<R[i-l].key)

{

R[0]=R[i];

j=i-l;

while(R[O].key<R[j].key)

{/*從右向左在有序區(qū)R[1....i+1查]找R[i]的插入位置*/

RU+1]=RU1;

R[j+1]=R[O];

)

if(i-l==m)

!

第%d趟的結(jié)果是

for(k=1;k<=N;k++)

請(qǐng)輸入還想輸出第幾趟結(jié)果,不想輸出時(shí)請(qǐng)輸入

if(m!=0)

(

最終排序結(jié)果是

for(k=l;k<=N;k++)

voidBubblesort()

〃自下向上

inti,j,k;

intexchange;

for(i=l;i<=N;i++)

{〃最多做N-l趟排序

exchange=FALSE;

for(j=N-l;j>=i;j-)

!

if(R[j+l].key<R[j].key)

(

R[O]=R[j+l];

R[j+1]=RU];

R[j]=R[O];

exchange=TRUE;

)

)

if(i==m)

(

第%(1趟的結(jié)果是

for(k=l;k<=N;k++)

請(qǐng)輸入還想輸出第幾趟結(jié)果,不想輸出時(shí)請(qǐng)輸入

)

ifi;(!exchange)11(m=0))

break;

)

if(m!=O)

(

最終排序結(jié)果是

for(k=1;k<=N;k++)

voidSelectsort()

(

inti,j,k,h;

for(i=l;i<N;i++)

h=i;

for(j=i+1;j<=N;j++)

if(R[j].keyvR[h].key)

h=j;

)

if(h!=i)

!

R[O]=R[i];

R[i]=R[h];

R[h]=R⑼;

)

if(i==m)

[

第%d趟的結(jié)果是

for(k=l;k<=N;k++)

請(qǐng)輸入還想輸出第幾趟結(jié)果,不想輸出時(shí)請(qǐng)輸入

if(m!=O)

{

最終排序結(jié)果是

for(k=l;k<=N;k++)

--?、

#include<stdio.h>

#defineN4

#definefalse0

#defineture1

typedefintkeytype;

typedefcharinfotype;

typedefstruct

{

keytypekey;

infotypeotherinfb;

Jrectype;

typedefrectypeseqlist[N+1];

intm,num;

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[O].key)

j-;

if(i<j)

(

R[i]=RUl;

i++;

)

while(i<j&&R|i].key<=R[O].key)

i++;

if(i<j)

(

R|j]=R|i];

j-;

}

}while(i<j);

R[i]=R[O];

quicksort(R,s,j-l);

quicksort(R,j+l,t);

)

)

voidshellsort(seqlist&R,intn)

(

inti,j,gap;

gap=n/2;

while(gap>0)

!

for(i=gap;i<=n;i++)

(

R[0]=R[i];

j=i-gap;

while(j>-l&&R[O].key<R[j].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;

1=V;

j=2*i;

R[O]=R[i];

while(j<=n)

(

if(j<n&&R[j].key<R[j+l].key)

j++;

if(R|O].key<R[j].key)

(

i=j;

j=2*i;

}

else

j=n+l;

}

R[i]=R[O];

)

voidheapsort(seqlist&R,intn)

(

inti;

for(i=n/2;i>=l;i—)

sift(R,i,n);

for(i=n;i>=2;i—)

{

R[0]=R[i];

R[i]=R[l];

R[1J=R[O];

sift(R,l,i-l);

)

)

voidshow(seqlist&R,intn)

(

inti;

for(i=l;i<=n;i++)

voidmain()

seqlistS;

inti;

charchl,ch2;

請(qǐng)輸入4個(gè)待排元素:(每?jī)蓚€(gè)數(shù)據(jù)間用空格隔開)

for(i=l;i<=N;i++)

chi=y;

while(chl==y||chl—Yf)

(

菜單

請(qǐng)選擇下列操作:

更新待排數(shù)據(jù)

快速排序

希爾排序

堆排序

退出

請(qǐng)選擇操作類型:

switch(ch2)

{

case'l':

請(qǐng)輸出更新待排數(shù)據(jù):

for(i=l;i<=N;i++)

break;

case'2':

quicksorts』,4);

show(S,4);

break;

case'S*:

shellsort(S,4);

show(S,4);

break;

case14':

heapsort(S,4);

show(S,4);

break;

case5:

chl-n';

break;

default:

chl=H;

三、#include<stdio.h>

#include<string>

#include<iostream>

usingnamespacestd;

#defineN6

#definefalse0

#defineture1

typedefintkeytype;

typedefstrinjinfotype;

typedefstruct

(

keytypepaim;

keytypekey;

infbtypeotherinfb;

Jrectype;

typedefrectypeseqlist[N+1];

intm,num;

seqlistR;

voidquicksort(seqlist&R,ints,intt)

inti=s,j=t;

if(i<j)

(

R[O]=R[i];

do

{

while(i<j&&R[j].key>=R[0].key)

j-;

if(i<j)

{

R[i]=R[j];

i++;

)

while(i<j&&R[i].key<=R[O].key)

i++;

if(i<j)

(

R[j]=R[i];

j-;

)

}while(i<j);

R[i]=R[0];

quicksort(R,s,j-l);

quicksort(R,j+l,t);

}

1

voidshellsort(seqlist&R,intn)

(

inti,j,gap;

gap=n/2;

while(gap>0)

I

for(i=gap;i<=n;i++)

(

R[0]=R[i];

j=i-gap;

while(j>=l&&R[O].key<R[j].key)

(

RU+gap]=R[j];

j=j-gap;

}

RU+gap]=R[0];

j=j-gap;

gap=gap/2;

voidsift(seqlist&R,intv,intn)

inti,j;

i=v;

j=2*i;

R[0]=R[i];

while(j<=n)

(

ifG<n&&R[j].key<R[j+l].key)

j++;

if(R[O].key<R[j].key)

{

R[i]=RUl;

i=j;

j=2*i;

)

else

j=n+l;

)

R[i]=R[0];

)

voidheapsort(seqlist&R,intn)

(

inti;

for(i=n/2;i>=l;i—)

sift(R,i,n);

for(i=n;i>=2;i—)

{

R[0]=R[i];

R[i]=R[U;

R[1]=R[O];

sift(R,l,i-l);

)

)

voidshow(seqlist&R,intn)

(

int

for(i=6;i>=l;i-)

(

R[i].paim=7-i;

if(R|i|.key==R|i+1J.key)

R[i].paim=R[i+l].paim;

姓名為:

成績(jī)?yōu)?

名次為:

)

)

voidmain()

seqlistS;

inti;

charchl,ch2;

請(qǐng)輸入6個(gè)成績(jī):

fbr(i=l;i<=N;i++)

請(qǐng)輸入6個(gè)學(xué)生姓名:

for(i=l;i<=N;i++)

cin?S[i].otherinfo;

chl=y;

while(chl='y'||chl—Y*)

(

菜單

請(qǐng)選擇下列操作:

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論