c++-algorithm 頭文件排序sort

想起來自己天天排序排序,冒泡啊,二分查找啊,結果在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;
}




發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章