关于C++排序函数sort和qsort用法

本文介绍了C++中sort和qsort函数的使用方法。sort函数允许自定义排序规则,如升序或降序,通过提供比较函数。而qsort函数是C语言中的排序函数,需要指定比较函数进行排序操作。示例展示了如何根据需求实现不同排序逻辑。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

用于C++中,对给定区间所有元素进行排序。

头文件是#include <algorithm>

sort函数见下表:

函数名 功能描述
sort 对给定区间所有元素进行排序
stable_sort 对给定区间所有元素进行稳定排序
partial_sort 对给定区间所有元素部分排序
partial_sort_copy 对给定区间复制并排序
nth_element 找出给定区间的某个位置对应的元素
is_sorted 判断一个区间是否已经排好序
partition 使得符合某个条件的元素放在前面
stable_partition 相对稳定的使得符合某个条件的元素放在前面
sort函数有三个参数

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函数应写为:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值