区别:
-
sort
函数是C++中提供的函数,用于对数组进行排序。它的参数比较简单,只需要传入数组的起始地址、数组中元素的个数以及比较函数即可。sort
函数会根据比较函数的规则对数组进行排序,默认升序排序(从小到大)C++中使用时要包含头文件<algorithm>。 -
qsort
函数是C语言标准库中提供的函数,用于对数组进行排序。与sort
函数不同的是,qsort
函数的比较函数需要使用函数指针来表示,这样可以更灵活地定义比较规则。qsort
函数的比较函数需要返回一个整数值,表示两个元素的大小关系。 -
对象支持不同:sort函数可以用于排序任何支持比较操作的对象(如内置类型、STL容器、自定义类等);而qsort函数只能对C语言中的基本数据类型进行排序,无法处理复杂对象。
-
参数不同: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;
}
谢谢观看!!![送花]