《《算法設(shè)計(jì)與分析》實(shí)驗(yàn)報(bào)告---快速排序》由會(huì)員分享,可在線(xiàn)閱讀,更多相關(guān)《《算法設(shè)計(jì)與分析》實(shí)驗(yàn)報(bào)告---快速排序(6頁(yè)珍藏版)》請(qǐng)?jiān)谘b配圖網(wǎng)上搜索。
1、
《算法分析與設(shè)計(jì)》
實(shí)驗(yàn)報(bào)告
題目:
姓名:
班級(jí):
快速排序
于文靜
計(jì)科 F1203
學(xué)號(hào):
2、
2
指導(dǎo)教師:
靳小波
完成時(shí)間:
2015-04-06
一、 實(shí)驗(yàn)題目
用遞歸分治法編寫(xiě) Hoare 快速排序算法
二、 實(shí)驗(yàn)?zāi)康?
1. 理解時(shí)間復(fù)雜度的概念。
2. 深入地掌握 C語(yǔ)言編程。
3. 通過(guò)編程直觀地理解算法分析的意義
三、 實(shí)驗(yàn)要求
請(qǐng)使用遞歸分治法編寫(xiě) Hoare 快速排序算法,算法的輸入如下:
7.30 7.15 4.27 2.14 6.29 3.99 0.26 9.10 1.89 2.86 0.44 5.52 4.35
3、
4.39 6.70 9.82 3.55 2.38 9.12 3.54 1.30 5.20 6.59 9.08 1.79 3.52
4.06 0.43 5.31 7.19 6.07 7.06 9.92 7.79 3.46 6.16 1.83 2.78 3.20
2.95 9.20 0.22 7.13 8.28 5.58 0.80 2.63 7.44 3.04 8.58 9.61 4.52
2.12 1.73 4.16 3.66 2.36 4.08 9.36 8.03 4.92 4.90 9.59 9.83 7.85
3.99 2.68 2.49 4.69 7.67
4、 7.56 8.85 3.88 7.74 6.27 5.48 7.29 2.81
3.67 2.52 1.95 1.82 4.38 4.42 5.54 4.41 1.94 0.31 8.41 5.69 4.59
四、 程序流程圖
開(kāi)始
將要排序的數(shù)據(jù)讀入到文本文件中,再將文本文件中的內(nèi)
容寫(xiě)到數(shù)組 a 中,其中,變量 cnt 為數(shù)組 a 的長(zhǎng)度;
對(duì)數(shù)組 a 進(jìn)行一次劃分,并定義變量 i=low j=high,low 和 high 分別為低地址和高地址;
N
i
5、
Y
N
a[i]<=a[j]&&i
6、
輸出經(jīng)過(guò)排序后數(shù)組 a 中的內(nèi)容;
結(jié)束
五、 程序代碼
#include
int Partition(double a[],int low,int high){
int i,j;
double temp;
i=low;
j=high;
while(i
7、
i++;
}
while(a[i]<=a[j]&&i
8、
}
}
void main(){
FILE* file = NULL;
int k,cnt;
double a[1000];
if((file = fopen("input2.txt","r")) == NULL)
{
printf("the
return;
not exist...\n");
}
cnt = 0;
while(!feof(file))
{
fscanf(file,"%lf",&a[cnt]);
cnt++;
9、
}
quickSort(a,0,cnt-1);
for(k=0;k