基礎演算法 algorithm

2021-10-10 08:11:30 字數 2071 閱讀 8918

標頭檔案:#include

sort(first,last,compare)

next_permutation(first,last)

unique(first,last)

sort(first,last,compare)

frist:排序起始位置(指標或iterator)

last:排序終止位置(指標或iterator)

compare:比較方法,預設時從小到大排序

sort的排序範圍:[first,last), o(nlogn)

sort只能對線性容器排序

sort預設公升序排序

int

main()

;sort

(a,a+6)

;for

(int i=

0;i<

6;i++)

vector<

int> v;

for(

int i=

3;i>=

0;i--

)sort

(v.begin()

,v.end()

);vector<

int>

::iterator it;

for(it=v.

begin()

;it!=v.

end(

);it++

)}

sort中compare引數使用

當預設排序無法滿足要求是,需要手寫乙個比較

函式作為sort的第三個引數。

bool

comp

(const

int&aa,

const

int&bb)

intmain()

;sort

(a,a+

6,comp)

;for

(int i=

0;i<

6;i++

)}

對結構體排序時也要在結構體內過載<,指明對結構體的哪個變數按照某種順序排序

struct node

void

print()

}p[50];

intmain()

sort

(p,p+3)

;for

(int i=

0;i<

3;i++

)return0;

}

next_permutation(first,last)

first:排列起始位置

last:排列終止位置

next_permutation將[first,last)範圍內的元素重新排列為下乙個字典序更大的排列

如果有下乙個字典序更大的排列,返回true,如果沒有,返回false並將序列調整為字典序最小的序列

#include

#include

#include

using

namespace std;

intmain()

;docout<}while

(next_permutation

(a,a+3)

);return0;

}

unique(first,last)

first:去重起始位置

last:去重終止位置

移除[first,last) 內連續重複項,一般配合sort使用,sort會將重複項都集中起來

返回去重完成後末尾的指標或迭代器

#include

#include

#include

using

namespace std;

intmain()

;long len=

unique

(a,a+12)

-a; cout

int i=

0;i)return0;

}

unique返回去重完成之後末尾的指標,a是陣列起始位置的指標,二者的差正好是去重完畢之後剩餘序列的長度。

Algorithm 排序演算法

閒來無事回顧一下原來所學的排序演算法,包括冒泡 選擇 插入 希爾 快速 歸併排序,這六種。首先依次講解原理,最後放出實現及測試速度原始碼。我想大部分人學習的第乙個排序演算法就是這個。顧名思義,如泡泡般,越到水面就越大,即經過連續不斷的判斷,選取大 或小 的值進行交換,一輪結束後,未排序資料最後面的就...

常用演算法(Algorithm)概述

參看內容 vc知識庫 演算法部分主要由標頭檔案,和組成。adjacent find adjacent 是鄰近的意思 binary search count count if equal range find find if merge sort random shuffle shuffle是洗牌的意...

C 演算法庫(algorithm)

演算法庫需要標頭檔案 include 返回函式 x 和 y 的最大值。include include using namespace std intmain 返回函式 x 和 y 的最小值。返回值為 x 的絕對值,必須為整數。如果是浮點數的絕對值使用 math.h 中的 fabs 交換 a,b 的值...