/*
* all right reserved.
* 檔名稱:main.cpp
* 完成日期:2023年9月20日
* 版本號:v1.0
*
* 問題描述:體驗複雜度
* 輸入描述:標準函式輸入
* 程式輸出:標準函式輸出
*/
(1)兩種排序演算法的執行時間
排序是電腦科學中的乙個基本問題,產生了很多種適合不同情況下適用的演算法,也一直作為演算法研究的熱點。本專案提供兩種排序演算法,複雜度為o(
n2)的選擇排序selectsort,和複雜度為o(
nlog
n)的快速排序quicksort,在main函式中加入了對執行時間的統計。
將比較時間差異。
//第一種演算法
#include #include #include #define maxnum 100000
void selectsort(int a, int n)
if (k != j)
}}int main()
while (fscanf(fp, "%d", &x[n]) != eof)
n++;
printf("資料量:%d, 開始排序....", n);
t1 = time(0);
selectsort(x, n);
t2 = time(0);
printf("用時 %d 秒!", (int)(t2 - t1));
fclose(fp);
return 0;
}
執行結果:
//第二種演算法
#include #include #include #define maxnum 100000
void quicksort(int data, int first, int last)
long move(int n, char a, char b, char c)
}
執行結果:
知識點總結:在第乙個專案中,運用不同的演算法求解相同的問題,可以看出兩種方法的效率差距是很大的。第二個專案中可以看出隨著要移動盤子的增多需要移動的次數呈指數型增長。
學習心得:所以,以後在開發設計演算法的時候要考慮好時間複雜度與空間複雜度,設計簡潔高效
(第二週專案3)體驗複雜度
1 兩種排序演算法的執行時間 提供兩種排序演算法,複雜度為o n 2 的選擇排序selectsort,和複雜度為o nlogn 的快速排序quicksort,在main函式中加入了對執行時間的統計。利用乙個將近10萬條資料的檔案作為輸入資料執行程式,感受兩種演算法在執行時間上的差異。執行中需要的資料...
第二週 專案3 體驗複雜度
include include include define maxnum 100000 void selectsort int a,int n if k j int main while fscanf fp,d x n eof n printf 資料量 d,開始排序.n t1 time 0 sel...
第二週專案3 體驗複雜度
檔名稱 專案3體驗複雜度.cpp 作 者 林穎 完成日期 2015年9月11日 問題描述 排序是電腦科學中的乙個基本問題,產生了很多種適合不同情況下適用的演算法,也一直作為演算法研究的熱點。本專案提供兩種排序演算法,複雜度為o n2 的選擇排序selectsort,和複雜度為o nlogn 的快速排...