A. 測試開發面試必知演算法
測試開發的技能之一就是需要掌握一些開發的語言,而針對於考察開發語言,業界內比較容易採用的方式就是考察各種演算法。在此做一個簡單的總結(最近比較喜歡玩python,所以都是以Python為例子,其它的語言類推。)
冒泡排序
冒泡排序演算法的運作如下:(從後往前)
比較相鄰的元素。如果第一個比第二個大,就交換他們兩個。
對每一對相鄰元素作同樣的工作,從開始第一對到結尾的最後一對。在這一點,最後的元素應該會是最大的數。
針對所有的元素重復以上的步驟,除了最後一個。
持續每次對越來越少的元素重復上面的步驟,直到沒有任何一對數字需要比較。
實例:對列表 [2, 8, 4, 7, 5, 9, 0]進行冒泡排序
遞歸
遞歸過程一般通過函數或子過程來實現。遞歸方法:在函數或子過程的內部,直接或者間接地調用自己的演算法。
實例:要計算1-10的10位數字的乘積,直觀的演算法是1 2 3 4 5 6 7 8 9,利用遞歸則思路是循環執行n*n-1,直到n=1時
二叉樹遍歷演算法
從二叉樹的遞歸定義可知,一棵非空的二叉樹由根結點及左、右子樹這三個基本部分組成。因此,在任一給定結點上,可以按某種次序執行三個操作:
⑴訪問結點本身(N),
⑵遍歷該結點的左子樹(L),
⑶遍歷該結點的右子樹(R)。
以上三種操作有六種執行次序:
NLR、LNR、LRN、NRL、RNL、RLN。
二叉樹的節點表示可以使用
前序遍歷:根節點->左子樹->右子樹
中序遍歷:左子樹->根節點->右子樹
後序遍歷:左子樹->右子樹->根節點
實例:求二叉樹深度和寬度
求深度用遞歸;求寬度用隊列,然後把每層的寬度求出來,找出最大的就是二叉樹的寬度
字元串倒序輸出
思路一:索引的方法
思路二:借組列表進行翻轉
後續還有的話會繼續添加的。
B. 經典C語言面試演算法題
經典C語言面試演算法題
1.寫一個函數,它的原形是int continumax(char *outputstr,char *intputstr)
功能:
在字元串中找出連續最長的數字串,並把這個串的長度返回,並把這個最長數字串付給其中一個函數參數outputstr所指內存。例如:"abcd12345ed125ss123456789"的首地址傳給intputstr後,函數將返回
9,outputstr所指的值為123456789。
#include
#include
#include
int FindMax_NumStr(char *outputstr,char *inputstr)
{
char *in = inputstr,*out = outputstr,*temp;
char *final;
int count = 0;
int maxlen = 0;
int i;
while(*in!='