第七十九題合集 微軟面試100題 第七十九題

2021-06-27 05:31:28 字數 2434 閱讀 4916

題目要求:

問題1:編寫實現鍊錶排序的一種演算法。

問題2:編寫實現陣列排序的一種演算法。

問題3:編寫能直接實現strstr()功能的**。

問題分析:

問題1分析:

方法1 首先想到的是氣泡排序,因為簡單;

方法2 如果記憶體空間允許,可以通過乙個陣列來輔助排序,時間複雜度o(nlogn),但是需要耗費空間複雜度.具體如下:

問題2分析:

對陣列排序有很多種,根據時間複雜度和空間複雜度的具體要求具體選擇,通常選擇快排,時間複雜度o(nlogn).

問題3分析:

strstr() 函式搜尋乙個字串在另乙個字串中的第一次出現。找到所搜尋的字串,則該函式返回第一次匹配的字串的位址;如果未找到所搜尋的字串,則返回null。

可以採用bf演算法和kmp演算法,時間複雜度分別為o(m*n)和o(m+n).

**實現:

問題1**:

//方法2

/*chengzhuwei

*/#include using namespace std;

typedef struct listnode

listnode;

void initlist(listnode **head);

int findlistlength(listnode *head);

void initarray(listnode **tmparray,listnode *head);

void printlist(listnode *head);

void quicksort(listnode **a,int low,int high);

int main(void)

void printlist(listnode *head)

cout << "null" << endl;

}void initarray(listnode **tmparray,listnode *head)

}int findlistlength(listnode *head)

return len;

}//111-->22-->3-->null

void initlist(listnode **head)

int findpos(listnode **a,int low,int high);

void quicksort(listnode **a,int low,int high)

a[low] = val;

return low;

}

問題2**:

#include int findpos(int *a,int low,int high);

void quicksort(int *a,int low,int high);

int main(void)

; int i;

quicksort(a,0,5);

for(i=0;i<6;i++)

printf("%d ",a[i]);

printf("\n");

return 0;

}void quicksort(int *a,int low,int high)}}

return null;

}int main()

//kmp演算法

#include #include void compute_prefix(int *next, char *p);

char *kmp_match(char *text, char *p, int *next);

int main()

void compute_prefix(int *next, char *p)

}char *kmp_match(char *text, char *p, int *next)

}return null;

}

微軟面試100題

41.求固晶機的晶元查詢程式 晶元盤由數目不詳的大小一樣的晶元組成,晶元並不一定全布滿晶元盤,照相機每次這能匹配乙個晶元,如匹配過,則拾取該晶元,若匹配不過,照相機則按測好的晶元間距移到下乙個位置。求遍歷晶元盤的演算法 求思路。兩個非降序鍊錶的並集,1 2 3 和 2 3 5 並為 1 2 3 5 ...

微軟面試100題 64

64.尋找醜數 運算 題目 我們把只包含因子2 3和5的數稱作醜數 ugly number 例如6 8都是醜數,但14不是,因為它包含因子7。習慣上我們把1當做是第乙個醜數。求按從小到大的順序的第1500個醜數。分析 這是一道在網路上廣為流傳的面試題,據說google曾經採用過這道題。package...

微軟面試100題 9

題目 輸入乙個整數陣列,判斷該陣列是不是某二元查詢樹的後序遍歷的結果。如果是返回true,否則返回false。例如輸入5 7 6 9 11 10 8,由於這一整數序列是如下樹的後序遍歷結果 8 6 10 5 7 9 11 因此返回true。如果輸入7 4 6 5,沒有哪棵樹的後序遍歷的結果是這個序列...