1演算法基礎

2022-05-31 08:30:13 字數 928 閱讀 8721

什麼是 stl?

stl(standard template library)是 c++ 標準模板庫,裡面提供了大量模板。

佇列(先進先出)

載入庫:include < queue >  申明:queue < type > name

queue中元素在記憶體中不一定連續。

q.push(x)向佇列 q 末尾加入元素 x o(1)

q.pop() 從對頭出隊o(1)

q.front() 返回佇列 q 開頭元素。q.back() 返回佇列 q 末尾元素。

q.size() 返回佇列 q 元素個數。q.empty() 返回佇列 q 是否為空。

應用:spfa演算法,bfs。(需要先來先走的情況,擴充套件節點)

載入庫:include < deque>  

雙端佇列deque是乙個支援在兩端高效插入或刪除元素的連續線性空間。他像vector和queue的結合。與vector相比,deque在頭部刪除和增加的元素的時間複雜度為o(1);與queue相比,deque像陣列一樣支援隨機訪問。

載入庫:include < priority_queue >  申明:priority_queue < type > name

一般使用:priority_queue< int,vector,greater> q; //小根堆

( 注意有三個元素要寫,vector無意義,但要寫;或者只寫前面的乙個也可以 )

過載小於號:

struct node{ //預設大根堆

int x,y; //先按和排序,再按x排序

bool operator<(const node &v) const {

if(x+y!=v.x+v.y) return x+y < v.x+v.y;

return xq;

演算法基礎1

概念 資料結構 data structure 儲存資料的不同方式 計算機作為一門工程學科,容易理解,做出東西來,比死板的背概念要重要的多。什麼是演算法?針對同乙個問題,不同的解決方法 比如從1到100求和,可以從1到100累加,也可以1 100 乘以50 如何測算演算法的優劣?時間測算 完成同樣的結...

演算法基礎 遞迴(1)

遞迴的基本概念乙個函式呼叫其自身,就是遞迴。例1 求n 的遞迴函式 int factorial int n 遞迴的作用 替代多重迴圈 解決本來就是用遞迴型式定義的問題 將問題分解為規模更小的子問題進行求解 例2 漢諾塔問題 void hanoi int n,char src,char mid,cha...

基礎演算法整合(1)

在資料結構與演算法中提到了很多的演算法,如折半查詢,快速查詢,歸併排序等等,熟悉這些演算法不能說讓我們計算能力提公升,但其中的邏輯思維與解決問題的方式卻值得我們去 本來打算把一些常用的演算法整合起來一次發完,但是 量有點大,我大概瀏覽都頭昏,所以決定分兩部分分享給大家。關於這些演算法的邏輯我基本都標...