初學者必知的12個基本演算法(上)

2021-08-17 06:10:36 字數 2711 閱讀 9629

在計算機的考試中,常常會遇到演算法的題目,這讓很多初學者傷透了腦筋,現在我在此總結常見的基本演算法,希望能起到一些幫助。

1.資料分離:

將乙個高位數的個十百千等位分離出來,演算法很簡單,也很基礎。如513,百位為5,十位為1,個位為3,如何讓電腦知曉這些資訊呢?

處理方法:

-分離個位: n%10

-分離十位: n/10%10

-分離白位: n/100%10

....

迴圈處理常用語句

while(n)

素數的判定:

求<=n的素數

因為2是最小的素數,故從2開始,依次乙個乙個地判斷整數是否能被不是1和自己的數整除,因為當j>i/2或根號i

時,便不會再有i的因數,故到i/2或根號i就可以了。

for(i=2;i<=n;i++)

3.迴圈累加,累乘,累除等

常用演算法

for(i=1;i<=n;i++)

迴圈體語句; /*可以是累加、累乘、累除的綜合使用*/

迴圈體中常用:

-累加:s=s+i;

-累乘:s=s*i;

-累除:s=s/i;

4.排序

——氣泡排序:

sort()函式讀入陣列,然後按公升序排序。

直接看例子:

void sort(int *a,int n)

}

——選擇排序:

選擇排序也有二重迴圈結構。

輸入陣列,按

void sort(int *a,int n)

}

5.牛頓迭代法:

牛頓迭代法又稱牛頓切線法:先任意設定乙個與真實的根接近的值x0作為第一次近似根,由x0求出f(x0),過(x0,f(x0))點做f(x)的切線,交x軸於x1,把它作為第二次近似根,再由x1求出f(x1),過(x1,f(x1))點做f(x)的切線,交x軸於x2,……如此繼續下去,直到足夠接近(比如|x- x0|<1e-6時)真正的根x*為止。       

例如,用牛頓迭代法求下列方程在1.5附近的根:2x3-4x2+3x-6=0。

float x,x0,f,f1;x=1.5;

do

while(fabs(x-x0)>=1e-5);

printf ("%f\n",x);

6.二分法查詢根

具體演算法如下:

(1)輸入x1和x2的值。

(2)求f(x1)和f(x2)。

(3)如果f(x1)和f(x2)同號說明在[x1, x2] 內無實根,返回步驟(1),重新輸入x1和x2的值;若f(x1)和f(x2)不同號,則在區間[x1, x2]內必有乙個實根,執行步驟(4)。

(4)求x1和x2的中點:x0=(x1+ x2)/2。

(5)求f(x0)。

(6)判斷f(x0)與f(x1)是否同號。

①如果同號,則應在[x0, x2]中尋找根,此時x1已不起作用,用x0代替x1,用f(x0)代替f(x1)。

②如果不同號,則應在[x1, x0]中尋找根,此時x2已不起作用,用x0代替x2,用f(x0)代替f(x2)。

(7)判斷f(x0)的絕對值是否小於某一指定的值(例如10-5)。若不小於10-5,則返回步驟(4)重複執行步驟(4)、(5)、(6);否則執行步驟(8)。

(8)輸出x0的值,它就是所求出的近似根。

例如,用二分法求方程2x3-4x2+3x-6=0在(-10,10)之間的根。

#include "math.h"

main()

while(fx1*fx2>0);

do

else

}

while(fabs(fx0)>1e-5);

printf("%f\n",x0);}

Oracle初學者必知的100個問題 3

51.如何將小表放入keep池中?alter table storage buffer pool keep 52.如何檢查是否安裝了某個patch?check that orainventory 53.如何使select語句使查詢結果自動生成序號?select rownum,col from tab...

Oracle初學者必知的100個問題 4

71.核心引數的應用?shmmax 含義 這個設定並不決定究竟oracle資料庫或者作業系統使用多少物理記憶體,只決定 了最多可以使用的記憶體數目。這個設定也不影響作業系統的核心資源。設定方法 0.5 物理記憶體 例子 set shmsys shminfo shmmax 10485760 shmmi...

10 個 Python 初學者必知編碼小技巧

技巧 1 字串翻轉 a codementor print reverse is a 1 翻轉後的結果為 rotnemedoc技巧 2矩陣轉置 mat 1,2,3 4,5,6 zip mat 1,4 2,5 3,6 技巧 3a 1,2,3 將列表中的三個元素分拆成三個變數 a 1,2,3 x,y,z ...