请给出一个qsort函数的使用例子
时间: 2024-10-23 20:13:25 浏览: 24
当然,以下是使用C标准库`qsort()`函数的一个基本示例,我们将对整数数组进行升序排列:
```c
#include <stdio.h>
#include <stdlib.h>
// 比较函数原型,这里我们比较两个整数a和b
int compare_ints(const void* a, const void* b) {
return (*(int*)a - *(int*)b);
}
int main() {
int arr[] = {5, 3, 9, 1, 7, 2};
int len = sizeof(arr) / sizeof(arr[0]);
// 使用qsort排序数组
qsort(arr, len, sizeof(int), compare_ints);
printf("Sorted array: ");
for (int i = 0; i < len; i++) {
printf("%d ", arr[i]);
}
printf("\n");
return 0;
}
```
在这个例子中,我们首先声明了一个比较函数`compare_ints`,它是`qsort`需要的一个关键参数,决定了元素的排序顺序。然后我们在`main()`函数中初始化一个整数数组,计算其长度,并调用`qsort`函数对其进行排序。最后,我们打印出排序后的数组。
**
相关问题
自己写出一个qsort函数
很高兴能回答您的问题!
以下是一个简单的 qsort 函数的示例代码:
```c
void qsort(int arr[], int left, int right)
{
int i, j, pivot, temp;
if (left < right) {
pivot = left;
i = left;
j = right;
while (i < j) {
while (arr[i] <= arr[pivot] && i < right)
i++;
while (arr[j] > arr[pivot])
j--;
if (i < j) {
temp = arr[i];
arr[i] = arr[j];
arr[j] = temp;
}
}
temp = arr[pivot];
arr[pivot] = arr[j];
arr[j] = temp;
qsort(arr, left, j - 1);
qsort(arr, j + 1, right);
}
}
```
希望这可以帮助您! 如果您有任何其他问题,都可以随时问我。
qsort函数的使用
qsort函数是C语言中的库函数,用于对数组进行快速排序。它的使用方法如下:
```c
#include <stdlib.h>
void qsort(void *base, size_t nmemb, size_t size, int (*compar)(const void *, const void *));
```
- `base`:指向要排序的数组的起始地址。
- `nmemb`:数组中元素的个数。
- `size`:每个元素的大小(以字节为单位)。
- `compar`:比较函数,用于确定元素之间的顺序。这个函数接受两个参数,分别是指向两个待比较元素的指针,返回一个整数:
- 若返回值小于0,则第一个元素应该排在第二个元素之前;
- 若返回值等于0,则两个元素的顺序不变;
- 若返回值大于0,则第一个元素应该排在第二个元素之后。
下面是一个使用qsort函数对整型数组进行排序的示例:
```c
#include <stdio.h>
#include <stdlib.h>
// 比较函数,用于升序排序
int compare(const void *a, const void *b) {
return *(int *)a - *(int *)b;
}
int main() {
int arr[] = {5, 2, 8, 1, 9};
int n = sizeof(arr) / sizeof(arr[0]);
qsort(arr, n, sizeof(int), compare);
printf("排序结果:");
for (int i = 0; i < n; ++i) {
printf("%d ", arr[i]);
}
printf("\n");
return 0;
}
```
这段代码将输出:`排序结果:1 2 5 8 9`,即将数组元素按升序排序。你可以根据自己的需求编写不同的比较函数,实现不同的排序方式。
阅读全文