1.2 演算法及其描述
阿新 • • 發佈:2020-09-16
1.2.1 演算法
-
演算法是對特定問題求解步驟的一種描述,它是指令的有限序列
-
特點:有窮性、確定性、可行性、有輸入、有輸出
-
程式指使用某種計算機語言對一個演算法的具體實現,演算法側重於對解決問題的方法描述
1.2.2 演算法設計的目標
-
正確性、可使用性、可讀性、健壯性、高效率、低儲存量需求
1.2.3 演算法描述
-
交換兩個整數的演算法
/*錯誤示例:x,y既是輸入型引數,也是輸出型引數,而swap1(x,y)中僅將形參x,y作為輸入型引數設計*/ void swap1(int x,int y) { int tmp; tmp = x;x = y;y = tmp; } /*改正方法1:採用指標的方式來回傳形參的值*/ void swap2(int *x,int *y) { int tmp; tmp = *x; *x = *y; *y = tmp; } /*改正方法2:採用引用型形參*/ void swap(int &x,int &y) //形參前的“&”符號不是指標運算子,而是引用 { int tmp = x; x = y; y = tmp; } /*執行swap(a,b)時,形、實參的匹配相當於: int &x = a; //x為a的引用 int &y = b; //y為b的引用 這樣a與x共享儲存空間,b與y共享儲存空間,執行函式後a,b的值發生了交換 */
-
求一元二次方程根的演算法
int solution(double a,double b,double c,double &x1,doule &x2) { double d; d = b*b - 4*a*c; if(d > 0) { x1 = (-b + sqrt(d))/(2*a); x2 = (-b - sqrt(d))/(2*a); return 2; //兩個實根 } else if(d == 0) { x1 = (-b)/(2*a); retrun 1; //一個實根 } else return 0; //不存在實根 }