1. 查找算法
查找算法是指:從一些數(shù)據(jù)之中,找到一個(gè)特殊的數(shù)據(jù)的實(shí)現(xiàn)方法。查找算法與遍歷有極高的相似性,唯一的不同就是查找算法可能并不一定會(huì)將每一個(gè)數(shù)據(jù)都進(jìn)行訪問,有些查找算法如二分查找等,并不需要完全訪問所有的數(shù)據(jù)。
查找算法適用于很多場(chǎng)景,最典型的應(yīng)用場(chǎng)景就是已知次品商品的特征,如何從一堆商品當(dāng)中查找出這些次品。
2. 順序查找算法簡(jiǎn)介
順序查找算法是最簡(jiǎn)單的查找算法,其意思為:線性的從一個(gè)端點(diǎn)開始,將所有的數(shù)據(jù)依次訪問,并求得所需要查找到的數(shù)據(jù)的位置,此時(shí),線性查找可以稱呼為遍歷。
3. 代碼實(shí)現(xiàn)
一個(gè)最簡(jiǎn)單的例題:有6個(gè)商品,他們每一個(gè)商品的重量都是10,但其中有一個(gè)商品是次品,他的重量只有9,請(qǐng)?jiān)O(shè)計(jì)代碼將其找出,為了簡(jiǎn)化內(nèi)容,我們直接利用數(shù)組Shangping存儲(chǔ)內(nèi)容。
#include<iosteam> using namespace std; int main(){ int Shangping[6]={10,10,9,10,10,10} for(int i=0;i<6;i++){ if(Shangping[i]==9){ printf("找到次品,他的位置在:%d",i+1); } } return 0; }
可以見到,本題中利用一層for循環(huán)即可找尋到目標(biāo),這相當(dāng)容易理解,即使映射到鏈表中進(jìn)行線性的查找依舊很容易理解,而在接下來的章節(jié)內(nèi),我們將依次學(xué)習(xí)折半查找(又名二分查找)以及分塊查找等靜態(tài)查找方法,也會(huì)講解二叉排序樹和平衡二叉樹這些利用數(shù)據(jù)結(jié)構(gòu)進(jìn)行操作的動(dòng)態(tài)查找方式。
C語言網(wǎng)提供由在職研發(fā)工程師或ACM藍(lán)橋杯競(jìng)賽優(yōu)秀選手錄制的視頻教程,并配有習(xí)題和答疑,點(diǎn)擊了解:
一點(diǎn)編程也不會(huì)寫的:零基礎(chǔ)C語言學(xué)練課程
解決困擾你多年的C語言疑難雜癥特性的C語言進(jìn)階課程
從零到寫出一個(gè)爬蟲的Python編程課程
只會(huì)語法寫不出代碼?手把手帶你寫100個(gè)編程真題的編程百練課程
信息學(xué)奧賽或C++選手的 必學(xué)C++課程
藍(lán)橋杯ACM、信息學(xué)奧賽的必學(xué)課程:算法競(jìng)賽課入門課程
手把手講解近五年真題的藍(lán)橋杯輔導(dǎo)課程