標籤:style http 使用 os width art
想起來自己天天排序排序,冒泡啊,二分尋找啊,結果在STL中就內建了排序函數sort,qsort,總算把自己解脫了~
所以自己總結了一下,首先看sort函數見下表:
函數名 |
功能描述 |
sort |
對給定區間所有元素進行排序 |
stable_sort |
對給定區間所有元素進行穩定排序 |
partial_sort |
對給定區間所有元素部分排序 |
partial_sort_copy |
對給定區間複製並排序 |
nth_element |
找出給定區間的某個位置對應的元素 |
is_sorted |
判斷一個區間是否已經排好序 |
partition |
使得符合某個條件的元素放在前面 |
stable_partition |
相對穩定的使得符合某個條件的元素放在前面 |
要使用此函數只需用#include <algorithm> sort即可使用,文法描述為:
sort(begin,end),表示一個範圍,例如:
int _tmain(int argc, _TCHAR* argv[])
{
int a[20]={2,4,1,23,5,76,0,43,24,65},i;
for(i=0;i<20;i++)
cout<<a[i]<<endl;
sort(a,a+20);
for(i=0;i<20;i++)
cout<<a[i]<<endl;
return 0;
}
輸出結果將是把數組a按升序排序,說到這裡可能就有人會問怎麼樣用它降序排列呢?這就是下一個討論的內容.
自己編寫一個比較函數來實現,接著調用三個參數的sort:sort(begin,end,compare)就成了。對於list容器,這個方法也適用,把compare作為sort的參數就可以了,即:sort(compare).
自己編寫compare函數:
bool compare(int a,int b)
{
return a<b; //升序排列,如果改為return a>b,則為降序
}
int _tmain(int argc, _TCHAR* argv[])
{
int a[20]={2,4,1,23,5,76,0,43,24,65},i;
for(i=0;i<20;i++)
cout<<a[i]<<endl;
sort(a,a+20,compare);
for(i=0;i<20;i++)
cout<<a[i]<<endl;
return 0;
}