qsort
功 能: 使用
快速排序例程进行排序
头文件:stdlib.h
用 法: void qsort(void *base,int nelem,int width,int (*fcmp)(const void *,const void *));
参数: 1 待排序
数组首地址
2 数组中待排序元素数量
3 各元素的占用空间大小
4 指向函数的
指针,用于确定排序的顺序
关于最后一个参数,他是一个比较函数,com函数应写为:
int com ( constvoid *a, constvoid *b )
{
return* ( int* ) a - * ( int* ) b;
}
不同的类型com可能会有不同的写法,可参考:http://blog.youkuaiyun.com/abcjennifer/article/details/6707237
sort
头文件 algorithm
原型
template< class RandomIt >
void sort( RandomIt first, RandomIt last ); |
(1)
| |
template< class RandomIt, class Compare >
void sort( RandomIt first, RandomIt last, Compare comp ); |
(2)
| |
sort(first,last)
在[first, last)中的元素进行排序按升序排列
(默认是升序排列)
first, last | - | 范围内的元素进行排序 |
comp | - |
比较函数,该函数返回true,如果第一个参数小于第二个。比较函数的签名应该相当于以下
:bool cmp(const Type1 &a, const Type2 &b);
签名不需要const &,但是函数不能修改对象传递给它。类型1和类型2他类型必须是这样一个类型的对象的引用,然后RandomIt可以隐式转换为两人。
|
效率上sort优于qsort,详细可参考:
http://blog.youkuaiyun.com/yzl_rex/article/details/7874513