转自:白马王的博客
一、STL中的sort函数:
头文件:#include<algorithm>
Tips:
void
template<class
void
1.默认的sort函数是按升序排。
sort(a,a+n);
2.自定义cmp函数,按特定意图进行排序,例如:
int cmp( constint &a, constint &b ) {
if( a > b ) return 1;
else return 0;
}
sort(a,a+n,cmp);//是对数组a降序排序
也可以对结构体进行排序:
struct Node {
};
int cmp(const Node a,const Node b)
{
}
二、qsort的排序库函数(注意这个与STL中的sort函数使用方法不大相同,因为这里的qsort参数均为void 类型所以要转一下,自定义的比较函数也会有不同,不同的数据类型也不一样)例如:
1、对int类型数组排序
int num[100];
int cmp ( constvoid *a , const void *b )
{
}
qsort(num,100,sizeof(num[0]),cmp);
2、对char类型数组排序(同int类型)
char word[100];
int cmp( const void *a , const void *b )
{
}
qsort(word,100,sizeof(word[0]),cmp);
3、对double类型数组排序(特别要注意)
double in[100];
int cmp( const void *a , const void *b )
{
}
qsort(in,100,sizeof(in[0]),cmp);
4、对结构体一级排序
struct In
{
}s[100];
//按照data的值从小到大将结构体排序,关于结构体内的排序关键数据data的类型可以很多种,参考上面的例子写
int cmp( const void *a ,const void *b)
{
}
qsort(s,100,sizeof(s[0]),cmp);
5、对结构体二级排序
struct In
{
}s[100];
//按照x从小到大排序,当x相等时按照y从大到小排序
int cmp( const void *a , const void *b )
{
}
qsort(s,100,sizeof(s[0]),cmp);
6、对字符串进行排序
struct In
{
}s[100];
//按照结构体中字符串str的字典顺序排序
int cmp ( const void *a , const void *b )
{
}
qsort(s,100,sizeof(s[0]),cmp);
7、计算几何中求凸包的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