標頭檔案:#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 的值...