用C++实现qsort函数
时间: 2023-12-06 11:45:25 浏览: 104
qsort函数是C语言标准库中的函数,不属于C++标准库,但是也可以在C++中使用。下面是用C++实现qsort函数的示例代码:
```cpp
#include <iostream>
#include <cstdlib> // 必须包含stdlib.h
using namespace std;
// 定义比较函数
int compare(const void* a, const void* b) {
return (*(int*)a - *(int*)b);
}
int main() {
int arr[] = {3, 1, 4, 1, 5, 9, 2, 6, 5, 3, 5};
int n = sizeof(arr) / sizeof(int);
qsort(arr, n, sizeof(int), compare); // 调用qsort函数
for(int i=0; i<n; i++) {
cout << arr[i] << " ";
}
cout << endl;
return 0;
}
```
注意,使用qsort函数需要包含stdlib.h头文件,同时要定义一个比较函数来告诉qsort函数如何进行排序。比较函数需要接收两个指针类型参数,并返回一个整型值,表示两个参数的大小关系。在上面的示例代码中,比较函数的实现是让a-b的结果作为返回值,因此排序结果为升序。
相关问题
用C++自己实现qsort函数
好的,下面是使用C++实现qsort函数的示例代码:
```c++
#include <iostream>
#include <cstdlib>
#include <ctime>
using namespace std;
// 比较函数
int cmp(const void *a, const void *b) {
return *(int*)a - *(int*)b;
}
int main() {
const int n = 10;
int arr[n];
// 随机生成数组
srand((unsigned)time(NULL));
for (int i = 0; i < n; i++) {
arr[i] = rand() % 100;
cout << arr[i] << " ";
}
cout << endl;
// 排序
qsort(arr, n, sizeof(int), cmp);
// 输出排序后的数组
for (int i = 0; i < n; i++) {
cout << arr[i] << " ";
}
cout << endl;
return 0;
}
```
这里我们使用了STL中的qsort函数进行排序,需要传入待排序的数组、数组元素数量、每个元素的大小以及比较函数。在比较函数中,我们将两个元素强制转换为int类型指针并且返回它们的差值,这样就可以按照升序排列了。
当然,如果你想自己手写快排函数,也是可以的。
qsort函数c++
以下是使用qsort函数在C++中对数组进行排序的示例代码:
```cpp
#include <iostream>
#include <cstdlib>
#include <ctime>
using namespace std;
int compare(const void* a, const void* b) {
return (*(int*)a - *(int*)b);
}
int main() {
const int SIZE = 10;
int arr[SIZE];
// 随机生成数组
srand(time(NULL));
for (int i = 0; i < SIZE; i++) {
arr[i] = rand() % 100;
}
// 排序前输出数组
cout << "排序前的数组:" << endl;
for (int i = 0; i < SIZE; i++) {
cout << arr[i] << " ";
}
cout << endl;
// 使用qsort函数排序
qsort(arr, SIZE, sizeof(int), compare);
// 排序后输出数组
cout << "排序后的数组:" << endl;
for (int i = 0; i < SIZE; i++) {
cout << arr[i] << " ";
}
cout << endl;
return 0;
}
```
该示例中,我们首先定义了一个compare函数,用于比较两个元素的大小。然后我们随机生成了一个大小为10的数组,并输出排序前的数组。接着使用qsort函数对数组进行排序,并输出排序后的数组。最后返回0表示程序正常结束。
阅读全文