C 编程语言中是否有用于排序数组的内置函数?还是我必须编写自己的函数?
问问题
27654 次
6 回答
14
查看 qsort
句法:
#include <stdlib.h>
void qsort( void *buf, size_t num, size_t size, int (*compare)(const void *, const void *) );
描述:
该qsort()
函数使用 Quicksort 对 buf(包含 num 个项目,每个项目的大小大小)进行排序。compare 函数用于比较 buf 中的项目。如果第一个参数小于第二个参数,compare 应该返回负数,如果它们相等则返回零,如果第一个参数大于第二个参数,则比较应该返回正数。qsort() 按升序对 buf 进行排序。
于 2012-07-17T14:37:26.517 回答
6
qsort是众所周知的。还有其他的,如堆排序、合并排序等。请查看链接以获取更多详细信息。
请注意,它们都将比较函数作为输入,这使得它们很容易与原生数据类型以及用户创建的数据类型一起使用。
于 2012-07-17T14:38:21.393 回答
3
是的:qsort
。它在stdlib.h
。
于 2012-07-17T14:37:40.753 回答
2
#include <stdio.h>
#include <stdlib.h>
// This function is used in qsort to decide the relative order
// of elements at addresses p and q.
int comparator(const void *p, const void *q)
{
return (*(int*)p-*(int*)q);
}
// A utility function to print an array
void printArr(int arr[], int n)
{
int i;
for (i = 0; i < n; ++i)
printf("%d ", arr[i]);
}
// Driver program to test above function
int main()
{
int arr[] = {1, 6, 5, 2, 3, 9, 4, 7, 8, 0};
int size = sizeof(arr) / sizeof(arr[0]);
qsort((void*)arr, size, sizeof(arr[0]), comparator);
printf("Output array is\n");
printArr(arr, size);
return 0;
}
于 2019-10-14T00:09:44.903 回答
0
简单的语法:
int function (const void * a, const void * b) {return ( *(int*)a-(int*)b);}
`qsort(arr_name , sizeofarray , sizeof(int), function);
于 2017-04-10T22:13:26.917 回答