為解決某類問題而設計的操作序列(非可執行的指令序列)
特點:有窮性、確定性、可行性、輸入輸出
邏輯上:針對所有的可能的情況進行判斷形式上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次,因為最後一次迴圈只剩下乙個陣列元素,所以不需...