想起來自己天天排序排序,冒泡啊,二分查找啊,結果在STL中就自帶了排序函數sort,qsort,總算把自己解脫了~
std::sort()函數的功能很強大,且可以對類,結構體等元素進行排序。C++sort參考手冊
所以自己總結了一下,首先看sort函數見下表:參考csdn
函數名 | 功能描述 |
---|---|
sort | 對給定區間所有元素進行排序 |
stable_sort | 對給定區間所有元素進行穩定排序 |
partial_sort | 對給定區間所有元素部分排序 |
partial_sort_copy | 對給定區間複製並排序 |
nth_element | 找出給定區間的某個位置對應的元素 |
is_sorted | 判斷一個區間是否已經排好序 |
partition | 使得符合某個條件的元素放在前面 |
stable_partition | 相對穩定的使得符合某個條件的元素放在前面 |
要使用此函數只需用#include <algorithm>
sort即可使用,語法描述爲:
sort(begin,end),表示一個範圍,例如:
#include<iostream>
#include<algorithm>
#include<string>
using namespace std;
int main()
{
int a[10]={9,12,17,30,50,20,60,65,4,49};
sort(a,a+10);
for(int i=0;i<10;i++)
cout<<a[i]<<' ';
cout<<endl;
return 0;
}
2)自己編寫一個比較函數來實現,接着調用三個參數的sort:sort(begin,end,compare)就成了。對於list容器,這個方法也適用,把compare作爲sort的參數就可以了,即:sort(compare).
#include<iostream>
#include<algorithm>
#include<string>
using namespace std;
bool compare(int a,int b)
{
return a<b; //默認升序排列,如果改爲return a>b,則爲降序
}
bool compare_decrease(int a,int b)
{
return a>b; //從大到小的排列
}
int main()
{
int a[10]={9,12,17,30,50,20,60,65,4,49};
sort(a,a+10);
for(int i=0;i<10;i++)
cout<<a[i]<<' ';
cout<<endl;
sort(a,a+10,compare_decrease);
for(int i=0;i<10;i++)
cout<<a[i]<<' ';
cout<<endl;
return 0;
}