c++qsort函数
时间: 2025-01-14 14:05:02 浏览: 60
### C++ 中 `qsort` 函数的使用方法
在 C++ 编程环境中,虽然推荐使用更高效的 `std::sort()` 函数,但仍然可以在必要时调用来自 C 标准库的 `qsort()` 函数来实现数组或其他数据结构的排序操作[^1]。
#### 参数说明
`qsort()` 接受四个参数:
- **base**: 指向要排序的数据的第一个元素的指针。
- **nmemb**: 表示待排序对象的数量。
- **size**: 单个对象的大小(以字节为单位),对于基本类型可以通过 `sizeof(type)` 来获取其尺寸。
- **compar**: 用于比较两个元素的函数指针。该回调函数接收两个指向被比较项的常量 void 类型指针作为输入,并返回整数值指示顺序关系;当第一个参数小于第二个时应返回负数,相等则返回零,大于则返回正数[^3]。
#### 示例代码
下面是一个简单的例子展示如何利用 `qsort()` 对整型数组进行升序排列:
```cpp
#include <iostream>
#include <cstdlib> // 包含 qsort 定义
// 自定义比较器:按升序排列
int compare(const void* a, const void* b){
int arg1 = *(const int*)a;
int arg2 = *(const int*)b;
if(arg1 < arg2) return -1;
if(arg1 > arg2) return 1;
return 0;
}
int main(){
int numbers[] = {4, 9, 7, 8, 6};
size_t n = sizeof(numbers)/sizeof(numbers[0]);
std::cout << "Before sorting:" ;
for(size_t i=0;i<n;++i)
std::cout << ' ' << numbers[i];
std::cout << '\n';
// 调用 qsort 进行排序
qsort(&numbers[0], n, sizeof(int), compare);
std::cout << "After sorting:";
for(size_t i=0;i<n;++i)
std::cout << ' ' << numbers[i];
std::cout << '\n';
}
```
此程序首先打印未排序前的数组内容,接着通过调用 `qsort()` 方法对其进行排序处理并再次输出已排序的结果[^2]。
阅读全文
相关推荐

















