三種常用演算法概述 遍試 迭代 遞迴

2021-06-28 11:06:10 字數 2803 閱讀 3097

為解決某類問題而設計的操作序列(非可執行的指令序列)

特點:有窮性、確定性、可行性、輸入輸出

邏輯上:針對所有的可能的情況進行判斷

形式上for中用if

示例:

using system;

class hanxin

}

using systen;

public class shuixianhua

}

執行結果:153、370、371、407

但人們目前最多知道11位的,隨著位數增大,耗時增大,然後就算不出來了。

using system;

class wanquanshu

public static void divsum(int n)

}

using system;

class xiangqinshu

static double sqrt( double a )while( math.abs(x*x-a)/a > 1e-6 );

return x;

}}

using system;

class testdebugpi

console.writeline( math.pi );

}}

其他:數字平方和、mandelbrot集、julia集

邏輯上:乙個問題華為同樣的問題

形式上:自己呼叫自己

示例:

using system;

public class fac

static long fac( int n )

}

using system;

public class fibonacci

static long fib( int n )

}

using system;

using system.drawing;

using system.collections;

using system.componentmodel;

using system.windows.forms;

using system.data;

public class form1 : form

static void main()

private void form1_paint(object sender, painteventargs e)

private graphics graphics;

const double pi = math.pi;

double th1 = 40 * math.pi / 180;

double th2 = 30 * math.pi / 180;

double per1 = 0.6;

double per2 = 0.7;

void drawtree(int n,

double x0, double y0, double leng, double th)

void drawline( double x0, double y0, double x1, double y1, int width )

} celay樹2:支隨機持

using system;

using system.drawing;

using system.collections;

using system.componentmodel;

using system.windows.forms;

using system.data;

public class form1 : form

static void main()

private void form1_paint(object sender, painteventargs e)

private void redraw(object sender, eventargs e)

private graphics graphics;

const double pi = math.pi;

double th1 = 35 * math.pi / 180;

double th2 = 25 * math.pi / 180;

double per1 = 0.6;

double per2 = 0.7;

random rnd = new random();

double rand()

void drawtree(int n,

double x0, double y0, double leng, double th)

void drawline( double x0, double y0, double x1, double y1 )

}

其他:koch分形集

遍試:for中用if

迭代:while中a=f(a);

遞迴:f(n)中用f(n-1);

堆排序(遞迴 迭代三種寫法)

具體的演算法流程可以參考 排序演算法 三 之堆排序 堆排序的基本思路 這裡重點討論下調整堆結構這個操作,這個結構是建立在大頂堆已經建立的基礎上的,有遞迴和迭代兩種方法。遞迴方法 public void heapify int arr,int n,int i 非遞迴方法 public void adj...

K Means的三種迭代演算法

k means是機器學習演算法 中乙個比較經典的聚類演算法 具體的實現方式主要有三種 lloyd forgy hartigan wong和macqueen lloyd演算法 lloyd演算法也可以稱作forgy或者lloyd forgy,是最為經典簡單的k means迭代演算法,其步驟如下 1.隨機...

常用的三種演算法

1.氣泡排序法 氣泡排序的基本思路是對比相鄰的元素值,如果滿足條件就交換元素值,把較小的元素移到陣列前面,把大的元素移到陣列後面,這樣較小的元素就像氣泡一樣上公升到頂部。冒泡演算法由雙層迴圈實現,其中外層迴圈用於控制迴圈次數,一般為要排序的陣列長度減1次,因為最後一次迴圈只剩下乙個陣列元素,所以不需...