基本思想:
從表的一端開(kāi)始牲剃,順序掃描線(xiàn)性表鳖轰,依次將掃描到的結(jié)點(diǎn)關(guān)鍵宇和給定值K相比較清酥。若當(dāng)前掃描到的結(jié)點(diǎn)關(guān)鍵字與K相等,則查找成功蕴侣;若掃描結(jié)束后焰轻,仍未找到關(guān)鍵字等于K的結(jié)點(diǎn),則查找失敗昆雀。
順序查找的優(yōu)點(diǎn):算法簡(jiǎn)單辱志,且對(duì)表的結(jié)構(gòu)無(wú)任何要求蝠筑,無(wú)論是用向量還是用鏈表來(lái)存放結(jié)點(diǎn),也無(wú)論結(jié)點(diǎn)之間是否按關(guān)鍵字有序揩懒,它都同樣適用什乙。
順序查找的缺點(diǎn):查找效率低,因此已球,當(dāng)n較大時(shí)不宜采用順序查找臣镣。
算法的實(shí)現(xiàn):
// 順序查找算法
// 在 array[0...length-1]中順序查找關(guān)鍵字為value的記錄 ,查找成功時(shí)返回該記錄的下標(biāo)序號(hào)
int sequelfSearch(int array[], int length, int value) {
if(NULL == array || 0 == length) {
return -1;
}
for(int index = 0; index < length; index++){
if(value == array[index]) {
return index;
}
}
return -1;
}
int main(int argc, const char * argv[]) {
int array[8] = { -4, -9, -5, 0, 2, 4, 8, 6 };
int index = sequelfSearch(array, 8, 6);
printf(" %d \n", index);
return 0;
}