1.kmp演算法
//長度為n的主串t中匹配長度為m的子串p (n>=m)。氣泡排序://匹配成功:存在p的每個字元依次和t中的乙個連續字串行相等
//輸出主串中匹配串起始位置,匹配失敗輸出-1
//思路:
//首先用o(m)的時間對子串進行預處理,可通過子串本身的特性判斷出需要右移幾位才是可能匹配的
//然後用o(n)的時間去完成匹配
//時間複雜度: o(m+n)
#include#include//失配函式
//f[i]表示狀態i失配時應轉移到新的狀態,特別注意f[0]=0
//根據f[0],f[1],...,f[i-1]遞推f[i]
void getfail(char* p, int* f)
else
printf("%d", a); }
a.01
b.10
c.12
d.22
5.排序
下列序排演算法中最壞複雜度不是n(n-1)/2的是_(d) a.
快速序排 b.冒泡序排 c.直接插入序排 d.堆序排
快速排序:
首先任意選取乙個資料(通常選用陣列的第乙個數)作為關鍵資料,然後將所有比它小的數都放到它前面,所有比它大的數都放到它後面,這個過程稱為一趟快速排序。
快速排序每次將待排序陣列分為兩個部分,在理想狀況下,每一次都將待排序陣列劃分成等長兩個部分,則需要logn次劃分。
而在最壞情況下,即陣列已經有序或大致有序的情況下,每次劃分只能減少乙個元素,快速排序將不幸退化為氣泡排序,所以快速排序時間複雜度下界為o(nlogn),最壞情況為o(n^2)。在實際應用中,快速排序的平均時間複雜度為o(nlogn)。
氣泡排序是一種用時間換空間的排序方法,最壞情況是把順序的排列變成逆序,或者把逆序的數列變成順序。在這種情況下,每一次比較都需要進行交換運算。6.時間複雜度直接插入排序:
每次從無序表中取出第乙個元素,把它插入到有序表的合適位置,使有序表仍然有序。
直接插入排序屬於穩定的排序,最壞時間複雜性為o(n^2),空間複雜度為o(1)。
堆排序:
由於堆排序對原始記錄的排序狀態並不敏感,因此它無論是最好、最壞和平均時間複雜度均為o(nlogn)。
判斷一包含n個整數a中是否存在i、j、k滿足a[i] + a[j] = a[k]的時間複雜度為(b)
a、o(n) b、o(n^
2) c、o(nlog(n)) d、o(n^2log(n))
7.程序
(d)不能用於linux中的程序通訊
a.共享記憶體
b.命名管道
c.訊號量
d.臨界區
現在linux使用的程序間通訊方式:
(1)管道(pipe)和有名管道(fifo)
(2)訊號(signal)
(3)訊息佇列
(4)共享記憶體
(5)訊號量
(6)套接字(socket)
所謂的臨界區(critical section),實際上指的是一段**。選d;在《windows核心程式設計第五版》中,對臨界區的解釋是:它是一小段**,它在執行之前需要獨佔對一些共享資源的訪問權。這種方式可以讓多行**以「原子方式」來對資源進行操控。這裡的原子方式,指的是**知道除了當前執行緒之外,沒有其他任何執行緒會同時訪問該資源。當然,系統仍然可以暫停當前執行緒去排程其他執行緒。但是,在當前執行緒離開臨界區之前,系統是不會去排程任何想要訪問同一資源的其他執行緒。
阿里巴巴2017實習生筆試題 一
ps 檢視答案請移步bat直通車 總計24道題目,鑑於csdn的markdown格式總出錯,這裡顯示有問題,建議直接移步bat直通車直接檢視 選擇題 1.關於c 的inline關鍵字,以下說法正確的是 a.使用inline關鍵字的函式會被編譯器在呼叫處展開 b.標頭檔案中可以包含inline函式的宣...
2023年阿里巴巴實習生筆試題
前幾天參加了阿里的筆試題,題目雖然很簡單,但是現在回想下發現出了不少問題,還是基礎不牢固啊。把這些題目寫出來也算是對自己的一種提公升吧。1.html題 國家名稱 網域名稱排名 中國 www.taobao.com 1 美國 epay www.epay.com 2 amazon www.epay.com...
2011阿里巴巴集團實習生招聘筆試題 C C
公共題 選擇題 每題5分 1.若一棵二叉樹具有10個度為2的結點,則該二叉樹的度為0的結點個數是 a 9 b 11 c 12 d 不確定 2.下列排序演算法中,其時間複雜度和記錄的初始排列無關的是 a 插入排序 預先排序,執行時間為o n b 堆排序 c 快速排序 最壞情形o n2 d 氣泡排序 最...