持續輸出面試題之演算法 線性表的查詢

2022-07-16 08:30:10 字數 1595 閱讀 3688

1.定義:

順序查詢是按照序列原有順序對陣列進行遍歷比較查詢的基本查詢演算法

2.原理:

通過遍歷陣列來尋找值

3.**實現:

public static int ordersearch(int arry, int des) 

return -1;

}

1.定義:分查詢也稱折半查詢(binary search),它是一種效率較高的查詢方法。但是,折半查詢要求線性表必須採用順序儲存結構,而且表中元素按關鍵字有序排列

2.原理:

首先,假設表中元素是按公升序排列,將表中間位置記錄的關鍵字與查詢關鍵字比較,如果兩者相等,則查詢成功;否則利用中間位置記錄將表分成前、後兩個子表,如果中間位置記錄的關鍵字大於查詢關鍵字,則進一步查詢前一子表,否則進一步查詢後一子表。重複以上過程,直到找到滿足條件的記錄,使查詢成功,或直到子表不存在為止,此時查詢不成功。

3.**實現:

public static int binarysearch(integer srcarray, int des)  else if (des < srcarray[middle])  else 

}//若沒有,則返回-1

return -1;

}

1.定義:分塊查詢是折半查詢和順序查詢的一種改進方法,分塊查詢由於只要求索引表是有序的,對塊內節點沒有排序要求,因此特別適合於節點動態變化的情況。

2.原理:

分塊查詢要求把乙個大的線性表分解成若干塊,每塊中的節點可以任意存放,但塊與塊之間必須排序。假設是按關鍵碼值非遞減的,那麼這種塊與塊之間必須滿足已排序要求,實際上就是對於任意的i,第i塊中的所有節點的關鍵碼值都必須小於第i+1塊中的所有節點的關鍵碼值。此外,還要建立乙個索引表,把每塊中的最大關鍵碼值作為索引表的關鍵碼值,按塊的順序存放到乙個輔助陣列中,顯然這個輔助陣列是按關鍵碼值費遞減排序的。查詢時,首先在索引表中進行查詢,確定要找的節點所在的塊。由於索引表是排序的,因此,對索引表的查詢可以採用順序查詢或折半查詢;然後,在相應的塊中採用順序查詢,即可找到對應的節點。

3.**實現:

//index代表索引陣列,st2代表待查詢陣列,keytype代表要查詢的元素,m代表每塊大小

public static int blocksearch(int index,intst2,int keytype,int m)

int i=1;

while((index[i-1]keytype))

return i;

return -1;

TCP IP面試題(持續更新)

no.1 tcp ip基礎 這些知識點都可以參考 no.2 常見面試題 tcp與udp的區別 tcp協議是有連線的,有連線的意思是開始傳輸實際資料之前tcp的客戶端和伺服器端必須通過三次握手建立連線,會話結束之後通過四次揮手結束連線。而udp是無連線的 tcp協議保證資料按序傳送,按序到達,提供超時...

幾個面試題 持續更新

1.簡單列舉了解的程式語言及語言間區別。python簡單,python開發效率快,python 簡潔,跨平台,學習成本比較低 2.列舉python2和3的區別 後期要找一些模組和專案的區別 py3 print 編碼方式 unicode 類 新式類 range 可迭代物件 input 獲取的內容全都是...

kafka面試題 持續更新

kafka 中的資料只能儲存七天,隨之而來的問題就是某個偏移量對應的資料被清除,我們通過偏移量去查詢資料而發生的報錯 資料已經被 kafka 給清除掉了 也就是說我們讀取的偏移量小於 kafka 中資料儲存的最早的偏移量,說明資料已經被 kafka 給乾掉了 解決方式 將拿到的偏移量和 kafka ...