#include
sort排序是和堆排序等一樣的較快的排序方式,時間複雜度為o(n*logn)。
類似於快速排序
vector:
#include
#include
#include
using namespace std;
vector<
int> v1;
int a;
intmain()
cout <<
"原始:"
;for
(int i =
0; i <5;
++i)
cout << v1[i]
<<
" ";
//輸出原始的情況
cout << endl;
sort
(v1.
begin()
, v1.
end())
; cout <<
"排序後:"
;for
(int i =
0; i <5;
++i)
cout << v1[i]
<<
" ";
//輸出使用sort排序好之後的情況
我們看到,在使用sort之後,確實將v1排好序了。
那麼sort函式是用什麼作為引數的呢?
sort函式一共有三個引數,第乙個是排序序列的起始位置;第二個是最後乙個位置的後乙個位置;第三個是排序規則,且第三個引數預設為公升序規則。所以我們上述用v1的begin和end作為第一二個引數,省略了第三個引數,排好序後v1內部是公升序的。
普通陣列:
注意這裡我們是對陣列x從下標1到5排序,但是我們在sort的第二個引數是加的6。
如果我們加5得到的結果如下:
我們發現sort只是對前四個數進行了排序,這就是我們前面提到的,第二個引數,必須是需要排序序列結束位置的後乙個位置(多加上1)。
#include
#include
#include
using namespace std;
vector<
int> v1;
int a;
intmain()
cout <<
"原始:"
;for
(int i =
0; i <5;
++i)
cout << v1[i]
<<
" ";
//輸出原始的情況
cout << endl;
sort
(v1.
begin()
, v1.
end(
),less<
int>()
);//less從小到大
cout <<
"從小到大:"
;for
(int i =
0; i <5;
++i)
cout << v1[i]
<<
" ";
//輸出使用sort排序好之後的情況
cout << endl;
sort
(v1.
begin()
, v1.
end(
), greater<
int>()
);//greater從大到小
cout <<
"從大到小:"
;for
(int i =
0; i <5;
++i)
cout << v1[i]
<<
" ";
//輸出使用sort排序好之後的情況
less為從小到大,greater為從大到小。因為預設為從小到大,所以一般省略掉了第三個引數。
#include
#include
#include
using namespace std;
struct node
;vector v;
node a;
bool cmp
(node a, node b)
//cmp將排序規則定為按照data1降序,若data1相等按data2降序
intmain()
sort
(v.begin()
, v.
end(
), cmp)
;//按照cmp規則進行排序
cout <<
"結果:"
<< endl;
for(
int i =
0; i <4;
++i)
cout << v[i]
.data1 <<
" "<< v[i]
.data2 << endl;
//輸出排好序的v1
這裡我們用cmp函式將排序規則定為:按照data1降序,data1相等的情況下,按照data2降序。
並且將cmp作為sort的第三個引數,就可以了。
發現問題歡迎指正!
C STL常用操作之vector篇
include 它是一種容器,可以理解為向量 陣列 可以動態申請增加長度的陣列。vector int v1 預設陣列長度為0 vector int v2 4 申請了長度為4的陣列v2 vector int v3 4,5 申請了長度為4的陣列,並且每個位置都賦值為5用at或者類似於陣列 vector ...
C STL常用操作之string篇
include 一種資料型別,類似於字串,但是可以進行一些比字串更方便的操作,在程式設計的時候也是經常用到。string s1 預設為空串 string s2 4 c 長度為4且每個位置的字元均為c cout s1 endl s2 endl getline cin,s1 讀取一整行 cin s2 讀...
C STL常用操作之stack篇
棧也是一種常用的資料結構,其特點是last in first out 後進先出 棧對於某些問題的處理是非常方便的,比如字尾表示式求值 中綴表示式轉化為字尾表示式。逆序輸出未知長度的字串 十進位制轉二進位制。等等 一般使用空腔構造 ss.push 2 將整形資料2壓入到棧ss中 ss.push 5 將...