sort在c++的用法详解
时间: 2023-10-12 10:18:28 浏览: 95
在C语言中,sort函数是用来对数组中的元素进行排序的。sort函数的原型为:
```c
void sort(void *base, size_t num, size_t size, int (*compare)(const void *, const void *));
```
其中,参数说明如下:
- base:指向要排序的数组的第一个元素的指针。
- num:数组中元素的个数。
- size:数组中每个元素的大小。
- compare:比较函数,用来指定排序的规则。
比较函数的原型为:
```c
int compare(const void *a, const void *b);
```
其中,参数a和b分别表示要比较的两个元素的指针。比较函数需要返回一个整数值,表示a和b的大小关系:
- 如果a小于b,返回一个负整数。
- 如果a等于b,返回0。
- 如果a大于b,返回一个正整数。
sort函数使用快速排序算法来对数组进行排序,时间复杂度为O(nlogn)。
下面是sort函数的使用示例:
```c
#include <stdio.h>
#include <stdlib.h>
int compare(const void *a, const void *b);
int main() {
int arr[] = {5, 3, 6, 2, 7, 1, 4};
int n = sizeof(arr) / sizeof(arr[0]);
// 对数组进行排序
qsort(arr, n, sizeof(int), compare);
// 输出排序后的数组
for (int i = 0; i < n; i++) {
printf("%d ", arr[i]);
}
printf("\n");
return 0;
}
int compare(const void *a, const void *b) {
int num1 = *(int*)a;
int num2 = *(int*)b;
if (num1 < num2) return -1;
if (num1 > num2) return 1;
return 0;
}
```
输出结果为:
```
1 2 3 4 5 6 7
```
在这个例子中,我们定义了一个整型数组arr,并使用qsort函数对其进行排序。sort函数会调用我们定义的compare函数来确定元素之间的大小关系。在compare函数中,我们使用了指针转换和解引用操作来获取要比较的元素的值,并根据其大小关系返回相应的值。最终,我们输出排序后的数组。
阅读全文