2017年計(jì)算機(jī)二級(jí)公共基礎(chǔ)輔導(dǎo)講義:查找技術(shù)

字號(hào):


    1.7 查找技術(shù)
    查找:根據(jù)給定的某個(gè)值,在查找表中確定一個(gè)其關(guān)鍵字等于給定值的數(shù)據(jù)元素。
    查找結(jié)果:(查找成功:找到;查找不成功:沒(méi)找到。)
    平均查找長(zhǎng)度:查找過(guò)程中關(guān)鍵字和給定值比較的平均次數(shù)。
    1、順序查找
    基本思想:從表中的第一個(gè)元素開(kāi)始,將給定的值與表中逐個(gè)元素的關(guān)鍵字進(jìn)行比較,直到兩者相符,查到所要找的元素為止。否則就是表中沒(méi)有要找的元素,查找不成功。
    在平均情況下,利用順序查找法在線性表中查找一個(gè)元素,大約要與線性表中一半的元素進(jìn)行比較,最壞情況下需要比較n次。
    順序查找一個(gè)具有n個(gè)元素的線性表,其平均復(fù)雜度為O(n)。
    下列兩種情況下只能采用順序查找:
    1)如果線性表是無(wú)序表(即表中的元素是無(wú)序的),則不管是順序存儲(chǔ)結(jié)構(gòu)還是鏈?zhǔn)酱鎯?chǔ)結(jié)構(gòu),都只能用順序查找。
    2)即使是有序線性表,如果采用鏈?zhǔn)酱鎯?chǔ)結(jié)構(gòu),也只能用順序查找。
    2、二分法查找
    思想:先確定待查找記錄所在的范圍,然后逐步縮小范圍,直到找到或確認(rèn)找不到該記錄為止。
    前提:必須在具有順序存儲(chǔ)結(jié)構(gòu)的有序表中進(jìn)行。
    查找過(guò)程:
    1)若中間項(xiàng)(中間項(xiàng)mid=(n-1)/2,mid的值四舍五入取整)的值等于x,則說(shuō)明已查到;
    2)若x小于中間項(xiàng)的值,則在線性表的前半部分查找;
    3)若x大于中間項(xiàng)的值,則在線性表的后半部分查找。
    特點(diǎn):比順序查找方法效率高。最壞的情況下,需要比較log2n次。
    *:二分法查找只適用于順序存儲(chǔ)的線性表,且表中元素必須按關(guān)鍵字有序(升序)排列(注釋1)。對(duì)于無(wú)序線性表和線性表的鏈?zhǔn)酱鎯?chǔ)結(jié)構(gòu)只能用順序查找。在長(zhǎng)度為n的有序線性表中進(jìn)行二分法查找,其時(shí)間復(fù)雜度為O(log2n)。
    注釋1:允許相鄰元素值相等。