1.默认的sort函数是按升序排。
2.可以自己写一个cmp函数,按特定意图进行排序,例如结构体,这个是比较好用的。
例如:
int cmp( const int &a, const int &b ){
if( a > b )
else
}
sort(a,a+n,cmp);//是对数组a降序排序
也可以对结构体进行排序。
例如杭电oj里1009题可以用结构体来解决:
//hdoj_1009 贪心,输入输出格式可能不对
#include <iostream>
#include <algorithm>
#include <stdio.h>
#define MAX 1000
using namespace std;
struct Node
{
};
int cmp(const Node a,const Node b)
{
}
int main()
{
}
其实还有qsort的排序库函数,不过这个与STL中的sort函数使用方法不大相同,因为这里的qsort参数均为void 类型所以要转一下,自定义的比较函数也会有不同,不同的数据类型也不一样,例如:
一、对int类型数组排序
int num[100];
int cmp ( const void *a , const void *b )
{
}
qsort(num,100,sizeof(num[0]),cmp);
二、对char类型数组排序(同int类型)
char word[100];
int cmp( const void *a , const void *b )
{
}
qsort(word,100,sizeof(word[0]),cmp);
三、对double类型数组排序(特别要注意)
double in[100];
int cmp( const void *a , const void *b )
{
}
qsort(in,100,sizeof(in[0]),cmp);
四、对结构体一级排序
struct In
{
}s[100];
//按照data的值从小到大将结构体排序,关于结构体内的排序关键数据data的类型可以很多种,参考上面的例子写
int cmp( const void *a ,const void *b)
{
}
qsort(s,100,sizeof(s[0]),cmp);
五、对结构体
struct In
{
}s[100];
//按照x从小到大排序,当x相等时按照y从大到小排序
int cmp( const void *a , const void *b )
{
}
qsort(s,100,sizeof(s[0]),cmp);
六、对字符串进行排序
struct In
{
}s[100];
//按照结构体中字符串str的字典顺序排序
int cmp ( const void *a , const void *b )
{
}
qsort(s,100,sizeof(s[0]),cmp);
七、计算几何中求凸包的cmp
int cmp(const void *a,const void *b) //重点cmp函数,把除了1点外的所有点,旋转角度排序
{
}
借鉴:
http://blog.csdn.net/appte/article/details/8253930。
http://blog.csdn.net/csust_acm/article/details/7326418