中南大學演算法實驗報告

2021-03-04 09:57:37 字數 2924 閱讀 5474

中南大學

《演算法分析與設計》實驗報告

實驗一【歸併排序】

編寫乙個簡單的程式,實現歸併排序

1、實驗目的:

了解並熟練掌握歸併排序

2、實驗內容

給定乙個陣列,並使其按照所要求的顯示輸出

3、演算法思想分析

遞迴是簡單的方法,但是其不能很好的表示出歸併

非遞迴的方法能比較好的從底層開始顯示整個歸併排序的思想

4、實驗過程分析

遞迴方法,只是先從前半部分進行拆分,組合,無法在第一部看到整個的底層的組合,所以理解上簡單,但是對於排序零基礎的人很難理解

五實驗源**及螢幕

#include "stdafx.h"

#include

#include

using namespace std;

void merge(int array,int left,int length)//??

else

k++;

}while(left1<=end1

while(left2<=end2

for(int i=0;i

delete(temp);

}void merge_sort(int array,int size)/*????*/

cout <<<< log(i) / log(2) << "?:[";

for (int k = 0; k < size; k++)

cout << "]" << endl;

}int main()

; cout<<

for(int i=0;i<8;i++)

cout< merge_sort(data,8);

return 0;

}實驗二快速排序

1、實驗目的

熟練掌握快速排序及快速排序每步

2、實驗內容

編寫一段程式,實現快速排序

3、演算法思想分析

設定乙個哨兵點,然後將比哨兵小的放置在左邊,把比哨兵點大的放在右邊

4、實驗過程分析

第乙個點搜尋,遇見比他小的,交換位置,新的哨兵點形成,依次

五、int partition(int array,int left,int right)//??

cout<<

for(int i=0;i<8;i++)

cout<

array[left]=s;

return left;

}void quicksort(int array,int left,int right)//????

}實驗三:迴圈賽日程表

實驗目的:

更加清楚詳細的了解分治演算法以及其在顯示生活中的應用

實驗內容:

(1) 編寫程式實現迴圈賽日程表。設有n=2k個運動員要進行網球迴圈賽。現要設計乙個滿足以下要求的比賽日程表:

(1)每個選手必須與其它n-1個選手各賽一次(2)每個選手一天只能賽一場(3)迴圈賽進行n-1天

三,實驗演算法思想

主要是使用分治演算法,大資料方面很難排序,比如八個隊vs八個隊,16個隊vs16個隊,都是很難進行所謂的排列日程表

若是我們從2個隊vs2個隊開始,就比較好用了吧,所以,分治演算法就是如此

四,實驗過程分析

將日程表顯示出來,就必須要輸出這個介面,我們暫且使用2維陣列來做出這個表。

五,源**以及截圖

#include

#include

#include

using namespace std;

#define maxn 64

#define max 32

int a[max][max]; //日程表陣列

void copy(int tox, int toy, int fromx, int fromy, int n)

void table(int k, int a[max])

}} void out(int a[max], int n)

printf("\n");

} void main()

}(1) 了解貪心演算法思想

(2) 掌握貪心法典型問題,如揹包問題、作業排程問題等。

(1) 編寫乙個簡單的程式,實現單源最短路徑問題。

(2) 編寫一段程式,實現找零。

【問題描述】當前有面值分別為2角5分,1角,5分,1分的硬幣,請給出找n分錢的最佳方案(要求找出的硬幣數目最少)。

(3) 編寫程式實現多機排程問題

【問題描述】要求給出一種作業排程方案,使所給的n個作業在盡可能短的時間內由m臺機器加工處理完成。約定,每個作業均可在任何一台機器上加工處理,但未完工前不允許中斷處理。作業不能拆分成更小的子作業。

(4)設n=8,[w1,…w8]=[100, 200, 50, 90, 150, 50, 20, 80],c=400。

程式設計求t[1..8].

(1) 寫出源程式,

(2) 並編譯執行

(3) 詳細記錄程式除錯及執行結果

1.單元最短路徑問題:

#include

#include

using namespace std;

#define vex 5//定義結點的個數

#define maxpoint 100

double graph[maxpoint]=,

,, ,

}; //鄰接矩陣

void main()

,b[maxpoint];

int d[vex],p[vex];//定義陣列d用來存放結點特殊距離,p陣列存放父親結點

//初始時,紅點集中僅有源結點0

r[0]=1; b[0]=0;

for(int i=1;ib[i]=1;

//對陣列d、p進行初始化

for(i=0;i

//輸出鄰接矩陣

for(i=0;i

中南大學數學建模實驗報告

數學實驗與數學建模實驗 報告學院專業班級 姓名學號 完成時間 2013 年12月28日 承諾書本人承諾所呈交的數學實驗與數學建模作業都是本人通過學習自行進行程式設計獨立完成,所有結果都通過上機驗證,無 或抄襲他人,也未經他人 或抄襲。若承諾不實,本人願意承擔一切責任。承諾人 2013年12月 28日...

作業系統實驗報告 中南大學

作業系統原理試驗報告 班級 學號 姓名 實驗一 cpu排程 一 實驗內容 選擇乙個排程演算法,實現處理機排程。二 實驗目的 多道系統中,當就緒程序數大於處理機數時,須按照某種策略決定哪些程序優先占用處理機。本實驗模擬實現處理機排程,以加深了解處理機排程的工作。三 實驗題目 1 設計乙個按優先權排程演...

資料庫實驗報告中南大學

資料庫系統概論 實驗報告 題目 認識dbms 實驗環境 windows xp sql 一實驗目的 1 熟悉資料庫的互動式sql工具。2 熟悉通過sql對資料庫進行操作。3 完成作業的上機練習。二實驗工具sql server 2005 利用sql server 2005及其互動式查詢來熟悉sql語句。...