寫演算法的
Vim、C++編譯器、Dev-C++、Code::Blocks、Visual Studio等。
Vim是一個類似於Vi的著名的功能強大、高度可定製的文本編輯器,在Vi的基礎上改進和增加了很多特性。VIM是自由軟體。Vim普遍被推崇為類Vi編輯器中最好的一個,事實上真正的勁敵來自Emacs的不同變體。
「Borland C/C++ 5.5.1 for Win32」是一個C/C++編譯器,其功能完整、包含多種SDK,且容量極小,安裝版本大小僅8MB。Borland公司的旗艦級產品「C++ Builder 5」內置的就是這一編譯器。
② 寫演算法和寫程序有什麼區別啊 請你們指教
演算法就是解決該問題的思路,可以用自然語言描述,也可以用偽計算機語言描述,目的是分析出解決該問題的方法.
寫程序就是根據分析出的算發編寫出符合該編程語言語法規范的代碼用來編譯執行而得到結果.
③ 寫演算法題為什麼大多用C語言而不用java
首先c語言的效率比較高,執行起來比較快
其次演算法有不少需要對浮點的數據做定點的截斷,這個用c語言比較通用。同時代碼量相對來說不大。
另外不少演算法在晶元上面去實現,很多晶元驗證環境同時支持c語言的參考模型。
④ 演算法的過程怎麼寫啊
演算法的流程書寫可通過流程圖或偽代碼來完成。
所謂流程圖是指以特定的圖形符號加上說明,表示演算法的圖,用它來表示演算法思路是一種極好的方法,因為有時候千言萬語不如一張圖形象生動易於理解,例如:
而偽代碼是介於自然語言和計算機語言之間的文字和符號(包括數學符號),它是一種不依賴於語言、用來表示程序執行過程、而不一定能編譯運行的代碼,例如:
Begin(演算法開始)
輸入 A,B,C
IF A>B 則 A→Max
否則 B→Max
IF C>Max 則 C→Max
Print Max
End (演算法結束)
⑤ 寫演算法,只要寫演算法
單鏈表 L_Head
結點Temp = L_Head; // 臨時結點,檢測結點的上一個結點
結點Check = L_Head; // 檢測用結點
while (結點Check != nullptr) {
if (結點Check->data == X) {
if (結點Temp == L_Head) { // 表頭
L_Head = L_Head->next;
結點Temp = L_Head;
} else {
結點Temp->next = 結點Check->next;
}
// 刪除結點Check
} else {
結點Temp = 結點Check;
}
結點Check = 結點Temp->next;
}
⑥ 用c語言寫演算法
直接手寫
size_t lenT, lenP, lenS;
char *e;
if ( !T || !P || !S ) return;
e = strstr( T, P );
if ( !e ) return;
lenT = strlen( T );
lenP = strlen( P );
lenS = strlen( S );
memmove( e+lenS, e+lenP, lenT+1-(e-T)-lenP );
memcpy( e, s, lenS );
假定三個長度 t、p、s 。
strstr: O(t*p)
strlen*3: O(t+p+s)
memmove: O(t-p)
memcpy:O(s)
最終復雜度 O(t*p+2(t+s)) -> O(n^2)。
可以看出熱點在 strstr 函數。
如果將其通過 kmp 或類似的匹配演算法優化成 O(n) 的,那麼復雜度可以直接降為 O(n) 。
⑦ 演算法該用哪種語言編寫
演算法的表示可以是自然語言,流程框圖,ns圖和程序語言。
但自然語言有歧義
程序設計語言表示後可以運行檢查
⑧ 請教編程高手:如何培養編寫演算法的思路
選一本出色的教材.有條件就看英文的,然後給自己一個環境,例如LINUX+GCC+GDB,用純粹的語言去在解決問題的過程中學習演算法.
沒有目的性去學習,往往效率不高,可以找一些ONLINE JUDGE的題目做做.例如Welcome To PKU JudgeOnline,對著裡面的問題,先自己思考,嘗試編程解決,如果不能解決,就翻翻演算法書,想想為什麼.
如果還是不行,那就上網看看別人有沒有解決掉,怎麼做,看看他們用到什麼演算法,比對著,然後進一步自己去實現.
有時候對於演算法的問題的實現,你在實現之前也許會卡住,但是在編程過程中,隨著你的鍛煉和熟練度的提高.會有那麼一天你覺得什麼都通了,而且,你是在用的過程中學習.堅持走下去,一定事半功倍.
「cracking the coding interview」,題目是按照array, stack&queue, 鏈表,樹圖,遞歸這種章節安排的,每章節題目7-8個,不多,難度中等,找感覺很有幫助。第一遍自己寫不出來的話(我就是,這么弱!),畫圖分析,抄背默。一遍做完再做一遍,第二遍就快很多,理解也深刻了,所謂讀書百遍,其意自現,演算法也一樣。
不要一開始就看《演算法導論》,這本書有太多關於演算法的數學證明.
推薦你看看這本:演算法(第4版) (豆瓣),作者是高德納的學生:塞奇威克 (Robert Sedgewick)
書中演算法代碼主要是用Java編寫,裡面有大量的圖來讓你明白例如:排序,查找,樹和圖的演算法運行過程。
這本書的目錄編排也很清晰,他就告訴你演算法主要就可以分為:排序,查找,圖和字元串。從這4個方面可以演化出很多演算法,最關鍵是:這本書的作者不但是在告訴你what,而且告訴你why(分析各種演算法的優缺點)
這本書其他好的地方
比如講到快速排序,很多書可能講了快速排序的原理就完了。但這本書就直接講了原始的快速排序可以改進的地方:1. 在小數組上,切換到插入排序;2. 三取樣切分;3. 三向切分的快速排序。
優先隊列怎麼和排序演算法扯上關系呢?其實優先隊列就是可以用堆排序來實現,堆排序的時間復雜度和快速排序是一樣的,但是實際中為什麼堆排序的運行時間要比快速排序多呢?因為這和CPU的Cache命中率有關系,堆排序不符合演算法運行的局部性原則
比如書中2.5節,講了排序演算法的實際用途,這本書不光告訴你演算法的原理,還告訴你演算法的用途。