c++和python實(shí)現(xiàn)順序查找實(shí)例
如何在一堆數(shù)據(jù)中找到某個(gè)數(shù)值的位置?
數(shù)值型數(shù)據(jù)作為信息的基本載體,廣泛用于各種信息的記錄,這些數(shù)據(jù)不僅需要被存儲(chǔ),更需要被使用。因此,從數(shù)據(jù)庫中正確的找到目標(biāo)數(shù)據(jù),是至關(guān)重要的操作。
我們先不考慮計(jì)算機(jī)是如何完成數(shù)值查找的,你會(huì)如何從下面這張表(黑色是數(shù)值,藍(lán)色是位置索引)中找到724這個(gè)數(shù)值?
顯然,上面有序表所有的數(shù)值都按照次序進(jìn)行排列,人眼可以根據(jù)數(shù)值大小關(guān)系確定區(qū)間從而很快的找到724在133位置上。但是,當(dāng)我們面臨的是幾百萬條無序數(shù)據(jù)時(shí),使用直覺進(jìn)行搜索就不管用了。為此,我們需要設(shè)計(jì)出算法來完成精確的搜索過程。
實(shí)際上,不管有多少條數(shù)據(jù),我們總可以通過逐一對(duì)比,進(jìn)而找到目標(biāo)數(shù)據(jù)。下面的gif顯示了一個(gè)簡(jiǎn)單的搜索過程,目標(biāo)數(shù)值是98:
上述過程就是順序查找算法,即將目標(biāo)數(shù)值和數(shù)據(jù)庫中的每個(gè)數(shù)值進(jìn)行比較,如果相同則搜索完成,如果不同則繼續(xù)比較下一處。下面將會(huì)采用python和C++分別實(shí)現(xiàn)順序查找算法,代碼都比較簡(jiǎn)單。
(1)python實(shí)現(xiàn)順序查找
def search(data_list, target_value): ? ? """ ? ? Args: ? ? ? ? data_list: list of data ? ? ? ? target_value: desired to be searched? ? ? """ ? ? # 定義索引游標(biāo) ? ? current_index = 0 ? ? while current_index<len(data_list): ? ? ? ? # 判斷當(dāng)前位置的數(shù)值和目標(biāo)數(shù)值是否相等 ? ? ? ? if data_list[current_index]==target_value: ? ? ? ? ? ? # 相等則返回目標(biāo)數(shù)值位置 ? ? ? ? ? ? return "target position is {}".format(current_index) ? ? ? ? # 不相等時(shí)移動(dòng)到下一處,繼續(xù)進(jìn)行比較 ? ? ? ? ? ? current_index += 1 ? ? # 全部數(shù)據(jù)都搜索完,返回搜索不到 ? ? ? ? return "target value {} not is data list".format(target_value)
(2)C++實(shí)現(xiàn)順序查找
int search(int *pointer,int dataLength, int targetValue) { ? ? /// 遍歷指針指向的數(shù)組,并防止越界 ?? ?for (int index = 0; index < dataLength; index++) { ? ? ? ? ? ? /// 找到則返回位置 ?? ??? ?if (pointer[index] == targetValue) { ?? ??? ??? ?return index; ?? ??? ?} ?? ?} ? ? /// 遍歷完成后找不到,則返回-1 ?? ?return -1; }
到此這篇關(guān)于c++和python實(shí)現(xiàn)順序查找實(shí)例的文章就介紹到這了,更多相關(guān)c++和python實(shí)現(xiàn)順序查找內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
- Python與C++中梯度方向直方圖的實(shí)現(xiàn)
- C++和python實(shí)現(xiàn)單鏈表及其原理
- c++與python實(shí)現(xiàn)二分查找的原理及實(shí)現(xiàn)
- python?與c++相互調(diào)用實(shí)現(xiàn)
- python直接調(diào)用和使用swig法方調(diào)用c++庫
- 如何利用Python實(shí)現(xiàn)簡(jiǎn)單C++程序范圍分析
- 如何在C++中調(diào)用python代碼你知道嗎
- C++調(diào)用python(執(zhí)行py文件)的全過程
- C++通過內(nèi)嵌解釋器調(diào)用Python及間接調(diào)用Python三方庫
- Python 調(diào)用 C++ 傳遞numpy 數(shù)據(jù)詳情
相關(guān)文章
位運(yùn)算實(shí)現(xiàn)十進(jìn)制轉(zhuǎn)換為二進(jìn)制
這篇文章主要介紹了位運(yùn)算實(shí)現(xiàn)十進(jìn)制轉(zhuǎn)換為二進(jìn)制的相關(guān)資料,需要的朋友可以參考下2015-03-03linux下c語言中隱藏進(jìn)程命令行參數(shù)(例如輸入密碼等高危操作)
啟動(dòng)程序很多時(shí)候用命令行參數(shù)可以很方便,做到簡(jiǎn)化一些配置,但是輸入用戶名密碼等操作,如果通過進(jìn)程查看工具直接看到密碼就太不安全了,這里就為大家分享一下方法2021-01-01C++調(diào)用python(執(zhí)行py文件)的全過程
這篇文章主要給大家介紹了關(guān)于C++調(diào)用python(執(zhí)行py文件)的相關(guān)資料,文中通過圖文以及實(shí)例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2021-12-12C++用easyx圖形庫實(shí)現(xiàn)障礙跑酷小游戲
這篇文章主要為大家詳細(xì)介紹了C++用easyx圖形庫實(shí)現(xiàn)障礙跑酷小游戲,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2020-12-12C語言實(shí)現(xiàn)一個(gè)簡(jiǎn)易通訊錄
這篇文章主要為大家詳細(xì)介紹了C語言實(shí)現(xiàn)一個(gè)簡(jiǎn)易通訊錄,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2020-07-07C語言中結(jié)構(gòu)體的內(nèi)存對(duì)齊規(guī)則講解
C 數(shù)組允許定義可存儲(chǔ)相同類型數(shù)據(jù)項(xiàng)的變量,結(jié)構(gòu)是 C 編程中另一種用戶自定義的可用的數(shù)據(jù)類型,它允許你存儲(chǔ)不同類型的數(shù)據(jù)項(xiàng),本篇讓我們來了解C 的結(jié)構(gòu)體內(nèi)存對(duì)齊2022-05-05