用于C++中,对给定区间所有元素进行排序。
头文件是#include <algorithm>
sort函数见下表:
函数名 | 功能描述 |
---|---|
sort | 对给定区间所有元素进行排序 |
stable_sort | 对给定区间所有元素进行稳定排序 |
partial_sort | 对给定区间所有元素部分排序 |
partial_sort_copy | 对给定区间复制并排序 |
nth_element | 找出给定区间的某个位置对应的元素 |
is_sorted | 判断一个区间是否已经排好序 |
partition | 使得符合某个条件的元素放在前面 |
stable_partition | 相对稳定的使得符合某个条件的元素放在前面 |
1.要排序的数组的起始地址。
2.要排序数组的结束地址;
3.排序的方法,即排序是按照升序还是降序。默认的排序方法是从小到大升序排序。
MSDN中的定义:
template<class RanIt>
void sort(RanIt first, RanIt last); //--> 1)
template<class RanIt, class Pred>
void sort(RanIt first, RanIt last, Pred pr); //--> 2)
可以自己写一个cmp函数,按照特定意图进行排序。如下按照降序顺序进行排序
bool cmp(const int &a,const int &b)
{
if(a > b)
return 1;
else
return 0;
}
用法:sort(a,a+n,cmp);//对数组a进行降序排序。
int cmp( const POINT &a, const POINT &b ){
if( a.x < b.x )
return 1;
else
if( a.x == b.x ){
if( a.y < b.y )
return 1;
else
return 0;
}
else
return 0;
}
sort(a,a+n,cmp);
是先按x升序排序,若x值相等则按y升序排序。
C++标准库提供了上述的功能,sort函数的第三个参数可以用如下语句告诉你采用的排序方法。
less<数据类型>()//从小到大排序
greater<数据类型>()//从大到小排序
对int数组排序可用,sort(a,a+n,less<int>())
对字符数组排序可用,sort(str,str+str.length(),less<char>())
C中的qsort是我刚学编程最常用的排序方法,附上qsort的使用方法:
#include <stdlib.h>
void qsort(void*base,size_t num,size_t width,int(__cdecl*compare)(const void*,const void*));
各参数:1 待排序数组首地址 2 数组中待排序元素数量 3 各元素的占用空间大小 4 指向函数的指针
其中base是排序的一个集合数组,num是这个数组元素的个数,width是一个元素的大小,compare是一个比较函数。
比如:对一个长为1000的数组进行排序时,int a[1000]; 那么base应为a,num应为 1000,width应为 sizeof(int),comp函数随自己的命名。
qsort(a,1000,sizeof(int),comp);
其中comp函数应写为: