版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
江南大學物聯(lián)網(wǎng)工程學院上機報告
課程名稱數(shù)據(jù)結構上機名稱排序上機日期2022-5-22
班級計科1203姓名汪俊學號1030412314
上機報告要求1.上機名稱2.上機要求3.上機環(huán)境4.程序清單(寫明運行結果)5.上機體味
1.上機名稱
排序,實驗5
2.上機要求
調試實驗一,補充實驗2主函數(shù),完成實驗3
3.上機環(huán)境
VisualC++6.0
4.程序清單(寫明運行結果)
、
#include<stdio.h>
#defineN10
#defineFALSE0
#defineTRUE1
typedefintKeyType;
typedefcharInfoType;
typedefstruct
(
KeyTypekey;
InfoTypeotherinfo;
JRecType;
typedefRecTypeSeqlist[N+1];
intm,num;〃全局變量m存儲輸出的是第幾趟結果,num存儲遞歸調用的次數(shù)
SeqlistR;
voidInsertsort();
voidBubblesort();
voidSelectsort();
voidmain()
(
SeqlistS;
inti;
charchl,ch2;
請輸入10個待排序的數(shù)據(jù):每兩個數(shù)據(jù)間用空格隔開
for(i=l;i<=N;i++)
chl-y';
while(ch1=-y'||ch1='Y')
(
菜單
請選擇下列操作
更新待排序數(shù)據(jù)
直接插入排序
冒泡排序
直接選擇排序
退出
請選擇操作類別
switch(ch2)
{
caseT:
請輸入更新待排序數(shù)據(jù)
for(i=l;i<=N;i++)
break;
case2:
請輸入要輸出第幾趟排序結果
for(i=l;i<=N;i++)
R[i].key=S[i].key;
Insertsort();
break;
case3:
請輸入要輸出第幾趟排序結果
for(i=l;i<=N;i++)
R[i].key=S[i].key;
Bubblesort();
break;
case4:
請輸入要輸出第幾趟排序結果
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趟的結果是
for(k=1;k<=N;k++)
請輸入還想輸出第幾趟結果,不想輸出時請輸入
if(m!=0)
(
最終排序結果是
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趟的結果是
for(k=l;k<=N;k++)
請輸入還想輸出第幾趟結果,不想輸出時請輸入
)
ifi;(!exchange)11(m=0))
break;
)
if(m!=O)
(
最終排序結果是
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趟的結果是
for(k=l;k<=N;k++)
請輸入還想輸出第幾趟結果,不想輸出時請輸入
if(m!=O)
{
最終排序結果是
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;
請輸入4個待排元素:(每兩個數(shù)據(jù)間用空格隔開)
for(i=l;i<=N;i++)
chi=y;
while(chl==y||chl—Yf)
(
菜單
請選擇下列操作:
更新待排數(shù)據(jù)
快速排序
希爾排序
堆排序
退出
請選擇操作類型:
switch(ch2)
{
case'l':
請輸出更新待排數(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;
姓名為:
成績?yōu)?
名次為:
)
)
voidmain()
seqlistS;
inti;
charchl,ch2;
請輸入6個成績:
fbr(i=l;i<=N;i++)
請輸入6個學生姓名:
for(i=l;i<=N;i++)
cin?S[i].otherinfo;
chl=y;
while(chl='y'||chl—Y*)
(
菜單
請選擇下列操作:
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025版實習指導教師專業(yè)素養(yǎng)提升項目勞動合同規(guī)范3篇
- 2025版公益宣傳活動宣傳品制作及推廣合同2篇
- 2025版住宅小區(qū)地下車庫車位租賃及維護服務合同范本2篇
- 2025版木工班組智能化設備引進與應用合同4篇
- 企業(yè)對人才需求談職業(yè)
- 2025年度個人房產(chǎn)維修勞務合同范本4篇
- 二零二五年度股權并購與國際化布局合同3篇
- 2025版國際貿(mào)易采購合同(原材料)3篇
- 民政局2025年度自愿離婚協(xié)議書財產(chǎn)分割與子女撫養(yǎng)協(xié)議范本4篇
- 基于2025年度需求的冷卻塔設計、安裝與調試服務合同2篇
- 四川省成都市武侯區(qū)2023-2024學年九年級上學期期末考試化學試題
- 教育部《中小學校園食品安全和膳食經(jīng)費管理工作指引》知識培訓
- 初一到初三英語單詞表2182個帶音標打印版
- 2024年秋季人教版七年級上冊生物全冊教學課件(2024年秋季新版教材)
- 環(huán)境衛(wèi)生學及消毒滅菌效果監(jiān)測
- 2024年共青團入團積極分子考試題庫(含答案)
- 碎屑巖油藏注水水質指標及分析方法
- 【S洲際酒店婚禮策劃方案設計6800字(論文)】
- 鐵路項目征地拆遷工作體會課件
- 醫(yī)院死亡報告年終分析報告
- 中國教育史(第四版)全套教學課件
評論
0/150
提交評論