C语言与C++语言中sort排序函数与qsort排序函数的使用与区别

区别:

  1. sort函数是C++中提供的函数,用于对数组进行排序。它的参数比较简单,只需要传入数组的起始地址、数组中元素的个数以及比较函数即可。sort函数会根据比较函数的规则对数组进行排序,默认升序排序(从小到大)C++中使用时要包含头文件<algorithm>。

  2. qsort函数是C语言标准库中提供的函数,用于对数组进行排序。与sort函数不同的是,qsort函数的比较函数需要使用函数指针来表示,这样可以更灵活地定义比较规则。qsort函数的比较函数需要返回一个整数值,表示两个元素的大小关系。

  3. 对象支持不同:sort函数可以用于排序任何支持比较操作的对象(如内置类型、STL容器、自定义类等);而qsort函数只能对C语言中的基本数据类型进行排序,无法处理复杂对象。

  4. 参数不同:sort函数接受两个迭代器作为参数,分别表示要排序的范围的起始和结束位置;而qsort函数接受一个指针、一个元素个数、每个元素的大小和一个比较函数作为参数。

注意:qsort函数是C语言标准库中提供的函数,但是C++兼容C语言,故可以在C++程序中使用qsort函数,在C++中使用qsort时要包含头文件<cstdlib>而C语言使用时要包含头文件<stdlib.h>

下面是sort函数与qsort函数的简单使用:

1.sort函数的使用

#include<iostream>
using namespace std;
#include<algorithm>//sort函数头文件
//使用sort函数排序
bool my_cmp(int a,int b)
{
	return a > b;
}
int main()
{
	//第一种排序方式,使用默认排序,默认升序排列
	int arr[10] = { 1,2,3,6,5,5,4,9,8,7 };
	sort(arr, arr+10);
	for (int i = 0; i < sizeof(arr) / sizeof(arr[0]); i++)
	{
		cout << arr[i]<<" ";
	}
	cout << endl;
	//第二种,自定义排序方式
	int arr2[10] = { 1,2,3,6,5,5,4,9,8,7 };
	sort(arr2, arr2 + 10, my_cmp);//可以根据所需调整my_cmp函数中比较方式
	for (int i = 0; i < sizeof(arr2) / sizeof(arr2[0]); i++)
	{
		cout << arr2[i]<<" ";
	}
	return 0;
}

2.qsort函数的使用

#include<iostream>
using namespace std;
#include<cstdlib>//qsort函数头文件
//使用qsort函数排序
int my_cmp(const void*a, const void*b)
{
	return *((int*)a) - *((int*)b);
}
int main()
{
	
	int arr[10] = { 1,2,3,6,5,5,4,9,8,7 };
	int sz = sizeof(arr) / sizeof(arr[0]);
	qsort(arr,sz,sizeof(arr[0]),my_cmp);
	//第-个参数:待排序数组的首元素地址
	//第二个参数:待排序数组的元素个数
	//第三个参数:待排序数组的每个元素的大小(单位是字节)
	//第四个参数:是函数指针,比较两个元素的所用函数的地址(这个函数使用者自己实现)
	//可以通过改变my_cmp函数自定义排序方式
	for (int i = 0; i < sizeof(arr) / sizeof(arr[0]); i++)
	{
		cout << arr[i]<<" ";
	}
	cout << endl;
	
	return 0;
}

谢谢观看!!![送花]

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值