c语言数组排序库函数
时间: 2023-10-20 18:09:13 浏览: 204
C语言中有一个标准库函数qsort()可以用来对数组进行排序。它的函数原型为:
```c
void qsort(void *base, size_t nmemb, size_t size, int (*compar)(const void *, const void *));
```
其中,base是指向要排序的数组的指针,nmemb是数组中元素的个数,size是每个元素的大小(以字节为单位),compar是一个函数指针,用来比较两个元素的大小关系。
下面是一个使用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[] = {3, 1, 4, 1, 5, 9, 2, 6, 5, 3};
int n = sizeof(arr) / sizeof(arr[0]);
qsort(arr, n, sizeof(int), compare);
for (int i = 0; i < n; i++) {
printf("%d ", arr[i]);
}
return 0;
}
```
输出结果为:1 1 2 3 3 4 5 5 6 9
相关问题
C语言数字排序库函数
C语言数字排序库函数包括qsort、bsearch和heapsort等。其中qsort是最常用的排序函数,可以对任意类型的数组进行排序。它的用法如下:
```
void qsort(void *base, size_t nmemb, size_t size,
int (*compar)(const void *, const void *));
```
其中,base表示要排序的数组的首地址,nmemb表示数组中元素的个数,size表示每个元素的大小,compar是一个函数指针,用于比较两个元素的大小。需要注意的是,compar函数必须返回一个整数值,如果返回负数,则表示第一个元素小于第二个元素;如果返回0,则表示两个元素相等;如果返回正数,则表示第一个元素大于第二个元素。
除了qsort外,bsearch也是一个常用的排序函数,它可以在有序数组中查找指定元素。其用法如下:
```
void *bsearch(const void *key, const void *base,
size_t nmemb, size_t size,
int (*compar)(const void *, const void *));
```
其中,key表示要查找的元素,base表示有序数组的首地址,nmemb表示数组中元素的个数,size表示每个元素的大小,compar也是一个函数指针,用于比较两个元素的大小。
heapsort则是一种堆排序算法,在处理大量数据时效率较高。其用法如下:
```
void heapsort(void *base, size_t nmemb, size_t size,
int (*compar)(const void *, const void *));
```
其中,base表示要排序的数组的首地址,nmemb表示数组中元素的个数,size表示每个元素的大小,compar也是一个函数指针,用于比较两个元素的大小。
c语言快速排序库函数
C语言中没有内置的快速排序库函数,但是你可以自己实现一个快速排序函数。下面是一个简单的快速排序函数的示例代码:
```c
#include <stdio.h>
void swap(int* a, int* b) {
int temp = *a;
*a = *b;
*b = temp;
}
int partition(int arr[], int low, int high) {
int pivot = arr[high];
int i = (low - 1);
for (int j = low; j <= high - 1; j++) {
if (arr[j] < pivot) {
i++;
swap(&arr[i], &arr[j]);
}
}
swap(&arr[i + 1], &arr[high]);
return (i + 1);
}
void quickSort(int arr[], int low, int high) {
if (low < high) {
int pi = partition(arr, low, high);
quickSort(arr, low, pi - 1);
quickSort(arr, pi + 1, high);
}
}
int main() {
int arr[] = {10, 7, 8, 9, 1, 5};
int n = sizeof(arr) / sizeof(arr[0]);
quickSort(arr, 0, n - 1);
printf("Sorted array: \n");
for (int i = 0; i < n; i++) {
printf("%d ", arr[i]);
}
return 0;
}
```
这个示例代码实现了一个快速排序算法。你可以将要排序的数组传递给`quickSort`函数,它会对数组进行原地排序。在上面的示例中,数组`arr`被排序为`1 5 7 8 9 10`。
阅读全文