排序綜合實(shí)驗(yàn)_第1頁(yè)
排序綜合實(shí)驗(yàn)_第2頁(yè)
排序綜合實(shí)驗(yàn)_第3頁(yè)
排序綜合實(shí)驗(yàn)_第4頁(yè)
排序綜合實(shí)驗(yàn)_第5頁(yè)
全文預(yù)覽已結(jié)束

下載本文檔

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

文檔簡(jiǎn)介

實(shí)驗(yàn)名稱:排序綜合實(shí)驗(yàn)實(shí)驗(yàn)?zāi)康模簠⒄崭鞣N排序算法程序樣例,驗(yàn)證給出的排序常見算法。實(shí)驗(yàn)內(nèi)容:輸入一組關(guān)鍵字序列分別實(shí)現(xiàn)下列排序:實(shí)現(xiàn)簡(jiǎn)單選擇排序、直接插入排序和冒泡排序。實(shí)現(xiàn)希爾排序算法。實(shí)現(xiàn)快速排序算法(取第一個(gè)記錄或中間記錄作為基準(zhǔn)記錄)??焖倥判虻姆沁f歸算法。實(shí)驗(yàn)要求:掌握各種排序算法的特點(diǎn),測(cè)試并驗(yàn)證排序的常見算法。提交實(shí)驗(yàn)報(bào)告,報(bào)告內(nèi)容包括:目的、要求、算法描述、程序結(jié)構(gòu)、主要變量說(shuō)明、程序清單、調(diào)試情況、設(shè)計(jì)技巧、心得體會(huì)。實(shí)驗(yàn)原理直接插入排序:在線性表中只包含第一個(gè)元素的子表顯然可以看成是有序表,接下來(lái)的問題是,從線性表的第二個(gè)元素開始直到最后一個(gè)元素,逐次將其中的每一個(gè)元素插入到前面已經(jīng)有序的子表中。一般來(lái)說(shuō),假設(shè)線性表中前j-1個(gè)元素已經(jīng)有序,將第j個(gè)元素插入到前面的有序子表的方法是:首先將第j個(gè)元素放到一個(gè)變量T中,然后從有序子表的最后一個(gè)元素開始逐個(gè)與T比較,將大于T的元素均依次向后移動(dòng)一個(gè)位置,直到發(fā)現(xiàn)一個(gè)元素不大于T為止,此時(shí)就將T插入到剛移出的空位置上,有序子表的長(zhǎng)度就變?yōu)閖了。冒泡排序:首先從表頭開始往后掃描線性表,在掃描過程中逐次比較兩個(gè)相鄰元素的大小,若前面的元素大于后面的則互換,,最后將最大的元素移到了最后,然后從后到前掃描剩下的線性表,同樣掃描過程中逐次比較相鄰兩個(gè)元素的大小,若后面的元素小于前面的,則互換,最后將最小的元素移到了最前面,對(duì)剩下的線性表重復(fù)上面的過程,直到剩下的表為空,線性表有序??焖倥判颍簭木€性表中選取一個(gè)元素T,然后將線性表后面小于T的元素移到前面,而大于T的元素移到后面,結(jié)果就將線性表分成了兩部分(稱為兩個(gè)字表),T插入到分界線的位置處,如果對(duì)分割后的各子表再按上述原則將進(jìn)行分割,直到所有子表為空為止,線性表有序。堆排序:首先將一個(gè)無(wú)序序列建成堆,然后將堆頂元素(序列中的最大項(xiàng))與堆中最后一個(gè)元素交換,不考慮已經(jīng)換到最后的那個(gè)元素,只考慮前n-1個(gè)元素構(gòu)成的子序列,顯然該序列已不是堆,但左右子樹仍為堆,可以將該子序列調(diào)整為堆,重復(fù)操作,直到剩下的子序列為空為止。實(shí)驗(yàn)步驟:通過主函數(shù)選擇控制分別采用直接插入排序法、冒泡排序法、快速排序算法、快速排序的非遞歸算法、堆排序法實(shí)現(xiàn)給該組數(shù)據(jù)排序。實(shí)驗(yàn)結(jié)果:#include<iostream>#include<iomanip>usingnamespacestd;//冒泡排序template<classT>voidbub(Tp[],intn){intm,k,j,i;Td;k=0;m=n-1;while(k<m){j=m-1;m=0;for(i=k;i<=j;i++)if(p[i]>p[i+1]){d=p[i];p[i]=p[i+1];p[i+1]=d;m=i;}j=k+1;k=0;for(i=m;i>=j;i--)if(p[i-1]>p[i]){d=p[i];p[i]=p[i-1];p[i-1]=d;k=i;}}return;}//快速排序template<classT>voidqck(Tp[],intn)intm,i;T*s;if(n>10){i=split(p,n);qck(p,i);s=p+(i+1);m=n-(i+1);qck(s,m);}elsebub(p,n);return;}//表的分割template<classT>staticintsplit(Tp[],intn){inti,j,k,l;Tt;i=0;j=n-1;k=(i+j)/2;if((p[i]>=p[j])&&(p[j]>=p[k]))l=k;elseif((p[i]>=p[k])&&(p[k]>=p[j]))l=k;elsel=i;t=p[l];p[l]=p[i];while(i!=j){while((i<j)&&(p[j]>=t))j=j-1;if(i<j){p[i]=p[j];i=i+1;while((i<j)&&(p[i]<=t))i=i+1;if(i<j){p[j]=p[i];j=j-1;}}}p[i]=t;return(i);}//插入排序template<classT>voidinsort(Tp[],intn){intj,k;Tt;for(j=1;j<n;j++){t=p[j];k=j-1;while((k>=0)&&(p[k]>t)){p[k+1]=p[k];k=k-1;}p[k+1]=t;}return;}//希爾排序template<classT>voidshel(Tp[],intn){inti,k,j;Tt;k=n/2;while(k>0){for(j=k;j<=n-1;j++){t=p[j];i=j-k;while((i>=0)&&(p[i]>t)){p[j+k]=p[i];i=i-k;}p[i+k]=t;}k=k/2;}return;}//選擇排序template<classT>voidselect(Tp[],intn){inti,j,k;Td;for(i=0;i<n-1;i++){k=i;for(j=i+1;j<n;j++)if(p[j]<p[k])k=j;if(k!=j){d=p[i];p[i]=p[k];p[k]=d;}}return;}template<classT>voidhap(Tp[],intn){inti,mm;Tt;mm=n/2;for(i=mm-1;i>=0;i--)sift(p,i,n-1);for(i=n-1;i>=1;i--){t=p[0];p[0]=p[i];p[i]=t;sift(p,0,i-1);}return;}intmain(){inti,j;doublep1[10]={4,3,2,1,5,7,6,8,9,0};doublep2[10]={4,3,2,1,5,7,6,8,9,0};doublep3[10]={4,3,2,1,5,7,6,8,9,0};doublep4[10]={4,3,2,1,5,7,6,8,9,0};doublep5[10]={4,3,2,1,5,7,6,8,9,0};cout<<"冒泡排序前的序列:"<<endl;for(i=0;i<1;i++){for(j=0;j<10;j++)cout<<setw(5)<<p1[10*i+j];cout<<endl;}bub(p1,10);cout<<"冒泡排序后的序列:"<<endl;for(i=0;i<1;i++){for(j=0;j<10;j++)cout<<setw(5)<<p1[10*i+j];cout<<endl;}cout<<"快速排序前的序列:"<<endl;for(i=0;i<1;i++){for(j=0;j<10;j++)cout<<setw(5)<<p2[10*i+j];cout<<endl;}qck(p2,10);cout<<"快速排序后的序列:"<<endl;for(i=0;i<1;i++){for(j=0;j<10;j++)cout<<setw(5)<<p2[10*i+j];cout<<endl;}cout<<"插入排序前的序列:"<<endl;for(i=0;i<1;i++){for(j=0;j<10;j++)cout<<setw(5)<<p3[10*i+j];cout<<endl;}insort(p3,10);cout<<"插入排序后的序列:"<<endl;for(i=0;i<1;i++){for(j=0;j<10;j++)cout<<setw(5)<<p3[10*i+j];cout<<endl;}cout<<"希爾排序前的序列:"<<endl;for(i=0;i<1;i++){for(j=0;j<10;j++)cout<<setw(5)<<p4[10*i+j];cout<<endl;}shel(p4,10);cout<<"希爾排序后的序列:"<<endl;for(i=0;i<1;i++){for(j=0;j<10;j++)cout<<setw(5)<<p4[10*i+j];cout<<endl;}cout<<"選擇排序前的序列:"<<endl;for(i=0;i<1;i++){for(j=0

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(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)論