C++查找算法(更新中)
生活随笔
收集整理的這篇文章主要介紹了
C++查找算法(更新中)
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
C++的查找分為靜態查找與動態查找。
靜態查找:只是在查找表中判斷是否有這一個元素,取出這個元素的屬性。
動態查找:在查找過程中,會對查找表做出修改。 比如插入、刪除。
靜態查找
靜態查找包括:順序查找、二分查找、分塊查找等。
順序查找O(n)
查找表可以是有序或無序。順序查找就是逐個比較。
#include <iostream>
#include <vector>
using namespace std;
int main()
{vector<int> vn_container;for(int i = 1;i<=10;i++)vn_container.push_back(i);int target = 6;for(int i = 0;i<vn_container.size();i++)if(vn_container[i] == target){cout<<"Exist"<<endl;return 0;}cout<<"Don't exist"<<endl;
}
二分查找O(logn)
要求查找表為有序,然后將target和查找表的中間值比較。小于中間值的話,去左邊查找,大于中間值的話,去右邊查找(如果是升序的話)。
#include <iostream>
#include <vector>
using namespace std;
int main()
{vector<int> vn_container;for(int i = 1;i<=10;i++)vn_container.push_back(i);int target = 6;int left = 0,right = 9;while(left < right){int mid = (left + right) >> 1;if(vn_container[mid] >= target) right = mid;else left = mid + 1;}if(vn_container[left] != target)cout<<"Don't exist"<<endl;elsecout<<"exist"<<endl;
}
總結
以上是生活随笔為你收集整理的C++查找算法(更新中)的全部內容,希望文章能夠幫你解決所遇到的問題。